インタラクションフロー

Udesk API 共通説明
ドキュメント参照 https://www.udesk.cn/website/doc/apiv2/intro/
用語説明:
urobot、robot:同じ意味で、Udeskボットを表します。
顧客の作成
ドキュメント参照: https://www.udesk.cn/website/doc/apiv2/customers/#_10
セッションの作成(オペレーター割り当てリクエスト)
POST /im/sessions
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | アプリケーション側の顧客一意識別子 |
| assign_type | 文字列 | いいえ | 希望する割り当てタイプ, 'robot', 'urobot', 'agent', デフォルトは 'robot' |
| agent_id | 整数 | いいえ | 指定割り当てオペレーターID。指定された場合、assign_type と group_id は無視されます |
| group_id | 整数 | いいえ | 指定割り当てオペレーターグループID。指定された場合、assign_type は無視されます |
| channel | 文字列 | いいえ | カスタムチャネル |
| robot_role_id | 文字列 | いいえ | 顧客ロール |
| robot_id | 整数 | いいえ | UdeskボットID |
| scene_id | 整数 | いいえ | Udeskボット対応シーンID |
| session_custom_fields | オブジェクト | いいえ | セッションカスタムフィールド。keyはカスタムフィールドID(セッションカスタムフィールド設定で確認)、valueはカスタムフィールド値 |
customer_token は、顧客作成時の open_api_token と一致します。 agent_id と group_id の両方が指定されておらず、かつ assign_type が 'agent' の場合、システムの割り当てルールに従って割り当てられます。 robot_role_id は、事前にクラウド質問側で設定しておく必要があります。 assign_typeが'urobot'の場合、robot_idとscene_idは必須であり、robot_idはUdeskで定義されたボットIDです。取得方法はurobotリストの取得を参照してください。
このcustomer_tokenを使用するユーザーがシステムに存在しない場合、 Udeskは自動的に「API匿名ユーザー(customer_token)」という名前のユーザーを作成します。 括弧内のcustomer_tokenは、パラメータで渡された値です。
例
curl 'https://demo.udesk.cn/open_api_v1/im/sessions?email=admin@udesk.cn&sign_version=v2×tamp=1648432914&sign=8a6wfe5dfd404d11a1e7fd5b7410b05ebdd561a4&nonce=1648632914&customer_token=828cw3d9-6a61-4afe-9efe-2c071d0e7cb3&assign_type=robot&agent_id=397' \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"agent_id":"397",
"customer_token":"827wd5r9-7a61-4afe-9efe-2c071d0e9cb2",
"assign_type":"agent",
"session_custom_fields":{
"SessionField_1": "1234567890"
}
}'
返却データ
| 属性名 | 型 | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表す |
| message | 文字列 | 割り当て成功時はウェルカムメッセージ、失敗時はエラーメッセージ |
| assign_type | 文字列 | 割り当てタイプ, 'robot', 'agent', 'urobot' |
| assign_info | オブジェクト | 割り当て結果情報 |
assign_type によって assign_info の構造が異なります。
ロボット返却
assign_type が robot の場合、assign_info の構造は以下の通りです:
| 属性名 | 型 | 説明 |
|---|---|---|
| robot_name | 文字列 | ロボット名 |
| robot_avatar | 文字列 | ロボットのアバター |
| welcome_message | 文字列 | ウェルカムメッセージ |
| unknow_message | 文字列 | 不明回答メッセージ |
例
{
"code": 1000,
"message": "リクエスト成功",
"assign_type": "robot",
"assign_info": {
"robot_name": "Udeskカスタマーサポートロボット",
"robot_avatar": "https://rd-dota.udesk.cn/entry/images/agent-avatar-3e6a68e1e1fcb4db653d9e93263f7946.png",
"welcome_message": "<p>こんにちは、私はインテリジェントカスタマーサポートロボットです。関連する業務に関する質問にお答えできます。何か質問があればお聞かせください! ご利用いただきありがとうございます!</p><p><br/></p>",
"unknow_message": "<p>申し訳ございません。現在は一般的な業務関連の質問にしかお答えできません!この質問は現在私の知識範囲外です。引き続き努力して学習します!別の簡単な言い方で質問していただければ、お答えできるかもしれません...</p>"
}
}
assign_type が 'urobot' の場合、assign_info の構造は以下の通りです:
| 属性名 | 型 | 説明 |
|---|---|---|
| sessionId | 整数 | セッションID |
| logId | 整数 | このログのID |
| leadingWord | 文字列 | リード文 |
| helloWord | 文字列 | ウェルカムメッセージ |
| robotName | 文字列 | ロボット名 |
| logoUrl | 文字列 | ロボットのアバター |
| topAsk | オブジェクト | よくある質問リスト |
例
リクエスト
curl 'https://test.udesk.cn/open_api_v1/im/sessions?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2' \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"customer_token":"test20191018224601",
"assign_type":"urobot",
"scene_id":39,
"robot_id":12362
}'
返却
{
"code": 1000,
"message": "リクエスト成功",
"assign_type": "urobot",
"assign_info": {
"sessionId": 23702,
"logId": 55392,
"robotName": "テスト",
"logoUrl": null,
"leadingWord": "こんにちは、ご利用いただきありがとうございます!",
"helloWord": "こんにちは、ご利用いただきありがとうございます!",
"topAsk": [
{
"quesitionType": "質問タイプ1",
"quesitionTypeId": 2,
"optionsList":[
{
"quesition":"質問1",
"quesitionId": 2122
},
{
"quesition": "質問2",
"quesitionId": 3222
}
]
}
]
}
}
カスタマーサポートへのリクエスト返信
assign_type が agent の場合、assign_info の構造は以下の通りです:
| 属性名 | 型 | 説明 |
|---|---|---|
| im_sub_session_id | 整数 | セッションID |
| count | 整数 | 待ち順位 |
| queue | 文字列 | 待ち行列 |
| agent_id | 整数 | 割り当てられたサポート担当者のID |
| agent_name | 文字列 | 割り当てられたサポート担当者の名前 |
| agent_avatar | 文字列 | サポート担当者のアバター画像アドレス |
| survey_options | オブジェクト | 満足度評価の設定 |
例
リクエスト
curl 'https://test.udesk.cn/open_api_v1/im/sessions?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2' \
-X POST \
-H 'Content-Type: application/json' \
-d '{
{
"customer_token":"test20191018224601",
"assign_type":"agent"
}
}'
正常な返信
{
"code": 1000,
"message": "リクエスト成功",
"assign_type": "agent",
"assign_info": {
"im_sub_session_id": 1234,
"count": 0,
"agent_id": 3,
"agent_name": "Tom",
"agent_avatar": "",
"survey_options": "survey_optionsの節を参照",
}
}
待ち行列の返信
{
"code": 2001,
"message": "現在サポート担当者が多忙です。お客様は3番目に並んでいます。",
"assign_type": "agent",
"assign_info": {
"count": 3,
"queue": "queue:company:1:agent:486"
}
}
割り当て境界
{
"code": 2001,
"message": "サポート担当者を割り当て中です!",
"assign_type": "agent",
"assign_info": {
"count": 0,
}
}
サポート担当者がオンラインでない
{
"code": 2002,
"message": "現在オンラインのサポート担当者はいません",
"assign_type": "agent",
"assign_info": {
"count": 0,
}
}
survey_options
"survey_options":
"enabled": true, # 有効かどうか
"name": "満足度評価",
"title": "本サービスの評価はいかがでしたか?", # 顧客に表示するプロンプト
"desc": "ご利用いただきありがとうございます。より良いサービスを提供するために、今回のサービスについて評価をお願いいたします(文字で返信してください)", # 微信/微博API満足度評価ガイダンス
"remark_enabled": true, # 評価コメントを記入可能かどうか
"remark": "評価コメントを記入できます", # 評価コメントのヒント
"show_type": String text|expression|star // 満足度の種類
text: { // オプション、show_typeがtextの場合に表示
default_option_id:
options: [{
id:
text: 非常に満足|満足|普通|不満|非常に不満 (変更可能、BIに表示)
desc: 変更不可
tags: "tag1,tag2" // カスタム評価タグ 例: サービスが良い、専門性が高い、対応が良い...
remark_option: hide|required|optional
}]
},
expression: { // オプション、show_typeがexpressionの場合に表示
default_option_id:
options: [{
id:
text: 満足|普通|不満
tags: "tag1,tag2"
remark_option: hide|required|optional
}]
},
star: { // オプション、show_typeがstarの場合に表示
default_option_id:
options: [{
id:
text: 満足|普通|不満
tags: "tag1,tag2"
remark_option: hide|required|optional
}]
},
"options": [ # 互換モード、評価オプション/ idは /im_sessions/survey の option_id に対応
{
"id": 36,
"text": "非常に満足2",
"enabled": true
},
{
"id": 37,
"text": "満足2",
"enabled": true
},
{
"id": 38,
"text": "普通2",
"enabled": true
},
{
"id": 39,
"text": "不満",
"enabled": true
},
{
"id": 40,
"text": "非常に不満",
"enabled": true
}
],
"methods": [ # 満足度評価方法
{
"id": 7,
"flag": "after_session",
"text": "セッション終了後にポップアップ",
"enabled": true
},
{
"id": 74,
"flag": "agent_invite",
"text": "カスタマーサポートからの招待",
"enabled": true
},
{
"id": 1485,
"flag": "customer_invite",
"text": "顧客からの満足度評価(webおよびAndroid/iOS SDKのみ対応)",
"enabled": true
}
],
"resolved_enabled": true,
"resolved_options": {
"title": "お問い合わせは解決しましたか?",
"options": [
{
"option_select": true,
"option_name": "解決済み"
},{
"option_select": true,
"option_name": "未解決"
}],
"value": "0" # オプションのデフォルト値
}
セッションを閉じる
顧客が指定したセッションを自発的に閉じる
DELETE /im/sessions/:session_id
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| session_id | 整数 | はい | セッションID, URL内 |
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表す |
例
$ curl -XDELETE 'https://demo.udesk.cn/open_api_v1/im/sessions/123?session_id=123&email=admin@udesk.cn&sign_version=v2×tamp=1645198019&sign=925f7a1a4ec944f52d59d33a9e35cb6e2478e589&nonce=1648194019'
セッションを削除する
既に閉じられたセッションを削除する
リクエストメソッド
DELETE /im/sessions/destroy_session
リクエストパラメータ(クエリストリング)
| パラメータ名 | 必須 | タイプ | 説明 |
|---|---|---|---|
| start_time | はい | 文字列 | 例 2022-05-19 19:50:33 |
| end_time | はい | 文字列 | 例 2022-05-19 20:50:33 |
| customer_id | いいえ | 整数 | このパラメータを渡す場合、指定した時間範囲内の該当顧客の会話記録のみを削除します。渡さない場合、指定した時間範囲内のすべての会話記録を削除します |
start_time と end_time は、セッションの作成時間をクエリします。
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000 は成功を表す |
例
リクエスト
curl -X DELETE 'https://test.udesk.cn/open_api_v1/im/sessions/destroy_session?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2&start_time=2022-05-19%2019%3A50%3A33&end_time=2022-05-19%2020%3A50%3A33&customer_id=123123'
レスポンス
{
"code": 1000
}
待ち行列の放棄
顧客が指定した待ち行列を自発的に閉じて放棄する
DELETE /im/sessions/close_queue
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | アプリ側の顧客一意識別子 |
| queue | 文字列 | はい | 待ち行列。セッション作成時に選択し、待機時に返された待ち行列データ |
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表す |
例
$ curl -XDELETE 'https://test.udesk.cn/open_api_v1/im/sessions/close_queue?customer_token=123qwe&queue=queue:company:1:agent:486&email=admin@test.com&sign=61b00dedbc749691232386fed059898af61b92c×tamp=1526293384'
メッセージプレビューの送信
APIクライアントがメッセージプレビューをカスタマーサポートに送信する(セッションの割り当てタイプassign_typeはagentである必要がある)
PUT /im/sessions/:session_id/message_preview
注意: このインターフェースは個別に有効化する必要があります。 このインターフェースには独立した頻度制限があります: 各 session_id は1秒間に3回まで呼び出せます。
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| session_id | 整数 | はい | セッションID, URL内 |
| content | 文字列 | はい | プレビュー内容テキスト、空文字列の場合はプレビューをクリアします, リクエストボディ内 |
メッセージプレビューをクリアするいくつかの方法: 1. カスタマーサポートが顧客からのメッセージを受信すると、プレビュー内容は自動的にクリアされます; 2. このインターフェースを呼び出し、同時にcontentに空文字列を渡すと、対応するセッションのメッセージプレビューもクリアされます。
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表す |
エラーレスポンス
| code 値 | message 説明 |
|---|---|
| 2062 | セッションが見つからない、またはセッションが閉じられています |
| 2065 | このインターフェースが有効化されていません |
| ### サンプル |
リクエスト
curl 'https://test.udesk.cn/open_api_v1/im/sessions/1/message_preview?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2' \
-X PUT \
-H 'Content-Type: application/json' \
-d '{"content": "テストプレビュー"}'
レスポンス
{
"code": 1000
}
メッセージ送信
APIクライアントがカスタマーサポートにメッセージを送信します(セッションの割り当てタイプassign_typeはagentである必要があります)
POST /im/messages
注意: ボットに送信するメッセージの type パラメータは、現在 'message' タイプのみサポートしています
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | アプリケーション側の顧客一意識別子 |
| im_sub_session_id | 整数 | はい | 1. セッションID 2. IDが0または空の場合はボット質問 3. IDが-1の場合はUdeskボット質問 4. -2はIMワークベンチのメッセージ 5. -3は待機中にメッセージを送信 |
| message_id | 文字列 | はい | メッセージID/会社メッセージ一意識別子(Udeskボットは省略可能) 英字、数字、"_"、"-"のみサポート、特殊文字は禁止 |
| type | 文字列 | いいえ | メッセージタイプ, 'message', 'image', 'audio', 'rich', デフォルトは 'message' |
| data | オブジェクト | はい | メッセージ内容 (詳細は メッセージ内容フォーマット) |
| quote_message_id | 文字列 | いいえ | 引用メッセージのmessage_id(今回の会話内のメッセージのみ引用可能、ボットメッセージはサポート対象外) |
| send_status | 文字列 | いいえ | 値の参照 取り消し:'rollback'(2分以内に取り消し可能) |
| robot_id | 整数 | いいえ | UdeskボットID(Udeskボットの場合は必須) |
| scene_id | 整数 | いいえ | Udeskボット対応シーンID(Udeskボットの場合は必須) |
| urobot_session_id | 整数 | いいえ | Udeskボット対応セッションID |
| agent_id | 整数 | いいえ | 指定割り当てカスタマーサポートID im_sub_session_id=-2と併用 |
| group_id | 整数 | いいえ | 指定割り当てカスタマーサポートグループID im_sub_session_id=-2と併用 |
| ### レスポンスデータ |
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数型 | 実行結果コード、1000は成功を表します |
エラーレスポンス(assign_typeが'robot'の場合)
| code 値 | message 説明 | |
|---|---|---|
| 1 | 9200 | セッションが存在しない/セッションは閉じられています |
| 2 | 2062 | パラメータが不足しています |
例
リクエスト
curl 'https://test.udesk.cn/open_api_v1/im/messages?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2' \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"customer_token":"1234123123",
"im_sub_session_id":11,
"message_id":"1",
"type":"image",
"data":{
"content": "本公司促销产品走过路过不要错过 <a href=\"https://xxx.com/1.png\">热销.com</a>"
}
}'
レスポンス
{
"code": 1000
}
顧客のオフライン未読メッセージを取得
指定された顧客とセッション内のサポートスタッフから顧客に送信されたオフライン未読メッセージの数と詳細を取得します
GET /im/messages/unread_customer_offline
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| im_sub_session_id | 整数型 | はい | セッションID |
| customer_id | 整数型 | はい | 顧客ID |
| app_id | 整数型 | いいえ | SDK app_id SDKチャネルセッションを読み取る必要がある場合、このパラメータを渡します |
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数型 | 実行結果コード、1000は成功を表します |
| count | 整数型 | 未読メッセージ数 |
| unread_messages | 配列 | メッセージの集合、集合内の要素は未読メッセージの詳細です。詳細は メッセージ内容フォーマット を参照してください |
リクエスト例
curl https://demo.udesk.cn/open_api_v1/im/messages/unread_customer_offline?im_sub_session_id=1419314&customer_id=5855308&email=admin@udesk.cn&sign_version=v2×tamp=1646827326&sign=06f59041bbbec54bd2a0b15b45672c9f43539135&nonce=1646827326
顧客のオンライン状態を変更
顧客のオンライン状態を変更します。
POST /im/customer_online_state
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | OpenApi 顧客一意識別子 |
| state | 整数 | はい | オフライン:0;オンライン:1 |
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表します |
リクエスト例
curl https://demo.udesk.cn/open_api_v1/im/customer_online_state?customer_token=5855308&state=0&email=admin@udesk.cn&sign_version=v2×tamp=1646827326&sign=06f59041bbbec54bd2a0b15b45672c9f43539135&nonce=1646827326
カスタマーサポートメッセージの既読状態を変更
カスタマーサポートメッセージの既読状態を変更します。
POST /im/messages/read_messages
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| session_id | 整数 | はい | セッションID |
| message_ids | 文字列配列 | はい | ["udesk_211679991890796","udesk_211679991890797"] メッセージID配列 |
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表します |
リクエスト例
curl https://demo.udesk.cn/open_api_v1/im/messages/read_messages?session_id=1234&message_ids=['123','123456']&email=admin@udesk.cn&sign_version=v2×tamp=1646827326&sign=06f59041bbbec54bd2a0b15b45672c9f43539135&nonce=1646827326
エージェントの未読メッセージを取得
エージェントの未読メッセージとは、顧客がエージェントに正常に送信したが、エージェントがまだ読んでいないメッセージです。
指定されたセッションにおけるエージェントの未読メッセージ数と、7日以内に未処理の留守番メッセージ数を取得します。
GET /im/messages/agent_unread_messages
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| agent_ids | 配列 | はい | エージェントIDの配列、最大30件まで |
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード |
| results | オブジェクト配列 | 返却結果セット |
| results.agent_id | 整数 | エージェントID |
| results.unread_session_message_num | 整数 | 未読メッセージ数 |
| results.unsolved_leave_message_num | 整数 | 7日以内に未処理の留守番メッセージ数 |
リクエスト例
curl https://demo.udesk.cn/open_api_v1/im/messages/agent_unread_messages?email=admin@udesk.cn&sign_version=v2×tamp=1646817998&sign=7ab7fb49d9c32ea246504b3af75a9w65210bca87&nonce=1646827998&agent_ids[]=13
顧客メッセージの既読ステータスを送信
リクエストメソッド
顧客メッセージの既読ステータスを送信します。
POST {接收消息URL}
メッセージ受信URLは、管理者->設定->チャネル管理->インターフェースメッセージで設定してください。
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| session_id | 整数 | はい | セッションID |
| message_ids | 文字列配列 | はい | メッセージIDのリスト |
レスポンスデータ
HTTPステータスコード200を返し、レスポンスボディは空で構いません。
注意:
- 5秒以内に返信してください。そうしないと、UDesk側で送信タイムアウトとみなされます。
- 60秒以内に10回のタイムアウトが発生した場合、最後のタイムアウトから60秒間、Udeskはこのアドレスへの呼び出しを停止します。
メッセージ返信通知
リクエスト方法
カスタマーサポートがAPIクライアントにメッセージをプッシュします。
POST {接收消息URL}
プッシュ形式は JSON です。 メッセージ受信URLは、管理者 -> 設定 -> チャネル管理 -> インターフェースメッセージ で設定してください。
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | アプリケーション側の顧客を一意に識別するもの |
| assign_type | 文字列 | はい | 割り当てタイプ, 'robot', 'agent', 'urobot' |
| messages | オブジェクト配列 | はい | メッセージ |
assign_type によって、message の形式が異なります。
assign_type が 'robot' の場合、message の形式は以下の通りです。
messages: オブジェクト配列
type: メッセージタイプ
message_id: メッセージID, 文字列
data: メッセージ内容
question_id: 0の場合は挨拶ライブラリ、Q&Aではない; 0以外の場合は、Q&Aに対して有用/無用の評価が可能
question_title: 質問内容, 文字列
answer: 質問の回答テキスト, 文字列
gus_list: 質問ガイドリスト
- question_title: 質問内容, 文字列
relate_list: 関連質問リスト
- question_title: 質問内容, 文字列
third_url: 関連おすすめリンク
url: リンクアドレス, 文字列
{
"customer_token": "axb",
"assign_type": "robot",
"messages": [{
"type": "message",
"message_id": "f862f80d-89aa-4f31-92d9-ccd4fcacffcf",
"data": {
"question_id": 210530,
"question_title": "会社の事業内容は何ですか",
"answer": "こんにちは、私たちはクラウドカスタマーサポートを提供する会社です!開発なしで、WeChat、Weibo、Web上のユーザーとコミュニケーションや管理ができます。",
"gus_list": [
{"question_title": "どのような業務を行っていますか"},
{"question_title": "御社の事業内容は何ですか"}
],
"relate_list": [
{"question_title": "会社の所在地はどこですか"},
{"question_title": "連絡先は何ですか"}
],
"third_url": {
"url": "https://www.udesk.cn"
}
}
}
]
}
assign_type が 'urobot' の場合、message の形式は以下の通りです。
messages: オブジェクト
sessionId: セッションID, 文字列
logId: メッセージのID
aid: 回答ID
ansContent: 回答内容
ansType: 回答タイプ (1は通常回答、2は回答と提案リスト、3は提案リスト、4は挨拶返信、6は不明な応答、8はセンシティブワード)
hitQuestion: 質問内容
suggestQuestionList: 提案リスト
flowId: 現在のフローID,
flowTitle: 現在のフロータイトル,
flowContent: 現在のフロー回答,
{
"sessionId": 1835244,
"logId": 3574331,
"aid": 12,
"ansContent": "申し立てフロー",
"ansType": 1,
"hitQuestion": "アカウント申し立て",
"suggestQuestionList": [
{
"id": 434,
"content": "問題1",
"type": 1
}
]
}
assign_type が 'agent' の場合、messages の形式は以下の通りです。
messages:
type: メッセージタイプ, 'message', 'image', 'audio', 'video', 'file', 'rich(リッチテキストメッセージ)', 'struct(構造化セッション)', 'survey(満足度評価関連イベント)', 'transfer(転送イベント)', 'info_transfer(転送イベント、属性の違いによる)'
message_id: メッセージID
agent_id: カスタマーサポートID
agent_name: カスタマーサポート名
agent_avatar: カスタマーサポートのアバター
im_sub_session_id: セッションID
message_created_at: メッセージ作成時間 "20170711 09:52:11"
data: 送信メッセージ内容と同じ
font: フォント, messageのみサポート
content: 内容
{
"customer_token": "axb",
"assign_type": "agent",
"messages": [
{
"type": "start_session",
"message_id": "xxxxx",
"agent_id": 1,
"agent_name": "TOM",
"agent_avatar": "https://123.com/1.png",
"im_sub_session_id": 3,
"message_created_at": "20170711 09:52:11",
"data": {
"content": "会話開始"
}
},{
"type": "message",
"message_id": "xxxxx",
"agent_id": 1,
"agent_name": "TOM",
"agent_avatar": "https://123.com/1.png",
"im_sub_session_id": 3,
"message_created_at": "20170711 09:52:12",
"data": {
"font": "フォント, messageのみサポート",
"content": "こんにちは、何かお手伝いできることはありますか?",
}
},
{
"type": "rich",
"message_id": "xxxxx",
"agent_id": 1,
"agent_name": "TOM",
"agent_avatar": "https://123.com/1.png",
"im_sub_session_id": 3,
"message_created_at": "20170711 09:52:13",
"data": {
"content": "当社のプロモーション商品、見逃さないでください <a href=\"https://xxx.com/1.png\">人気商品.com</a>",
}
},
{
"type": "close",
"message_id": "xxxxx",
"agent_id": 1,
"agent_name": "TOM",
"agent_avatar": "https://123.com/1.png",
"im_sub_session_id": 3,
"message_created_at": "2018-01-01 00:00:00",
"data": {
"close_type": "normal(通常)|redirect(転送)|force(強制)"
"content": "セッションを閉じる",
"survey_options": "survey_optionsの節を参照",
}
}
]
}
返却データ
HTTPステータスコード200を返し、レスポンスボディは空で構いません。
注意:
- 5秒以内に返却してください。さもなければUDesk側は送信タイムアウトとみなします。
- 60秒以内に10回のタイムアウトが発生した場合、最後のタイムアウトから60秒間、Udeskは当該アドレスへの呼び出しを停止します。
メッセージ内容フォーマット
type タイプ及びサポートリスト
| タイプ | type | 意味 | 送信 | 受信 | 備考 |
|---|---|---|---|---|---|
| メッセージ | message | テキストメッセージ | ✓ | ✓ | |
| メッセージ | image | 画像メッセージ | ✓ | ✓ | |
| メッセージ | audio | 音声メッセージ | ✓ | × | amrフォーマットをサポート |
| メッセージ | video | 動画メッセージ | ✓ | × | mp4フォーマットをサポート |
| メッセージ | file | ファイルメッセージ | ✓ | × | |
| メッセージ | rich | リッチテキストメッセージ | ✓ | ✓ | 一般的なHTMLタグをサポート |
| メッセージ | struct | 構造化メッセージ | × | × | 現在はサポートされていません |
| イベント | start_session | セッション開始 | × | ✓ | セッション開始時に顧客にプッシュ |
| イベント | transfer | 転送イベント | × | ✓ | 顧客が転送された時に顧客にプッシュ。顧客はim_sub_session_idを新しいものに変更する必要があります |
| イベント | info_transfer | 転送イベント表示内容 | × | × | 顧客が転送された時にカスタマーサポートに表示されるヒント内容 |
| イベント | close | セッション終了イベント | ✓ | ✓ | 顧客セッションが終了された時に顧客にプッシュ |
| イベント | survey | 満足度評価関連イベント | × | × | カスタマーサポートIMワークベンチでのみ表示されます |
| イベント | active_guest | カスタマーサポートによるアクティブセッションイベント | × | × | Webビジターのみサポート |
| イベント | info_appoint | カスタマーサポートによる顧客割り当てイベント | × | × | 現在はサポートされていません |
| イベント | form | フォームメッセージ送信イベント | × | × | 現在はサポートされていません |
| イベント | form_received | フォームメッセージ受信イベント | × | × | 現在はサポートされていません |
| イベント | info | 事前問い合わせフォーム is_receive: false | × | × | カスタマーサポート表示専用 |
| イベント | robot_transfer | ロボットから転送されたセッション | × | × | カスタマーサポート表示専用 |
注: サポートされていない/現在サポートされていない/カスタマーサポート表示専用のメッセージは、クライアント側で表示・処理しないでください。
メッセージ内容詳細
type の種類によって、data の構造も異なります:
# 通常メッセージ
type: 'message'
data:
font: フォント形式, 任意, 例:
content: テキスト内容 注: テキスト内容にはリッチテキストHTMLタグを含めることができます
# 画像メッセージ
type: 'image'
data:
content: url
# 音声メッセージ
type: 'audio'
data:
content: url
filename: 'サッカー.mp4' #
filesize: "4.3M"
duration: 200 # 音声の長さ、ない場合もあります # 単位は秒
type: 'video' # mp4のみサポート
data:
content: url
filename: 'サッカー.mp4' # ファイル名
filesize: "4.3M" # ファイルサイズ
type: 'rich' # サポート
data:
content: <p>こんにちは、小雅カスタマーサポートがご案内いたします。何かお手伝いできることはありますか?</p>
# type: struct 構造化メッセージ, 現在は web/sdk のみサポート
# 関連ドキュメント <https://www.udesk.cn/website/doc/apiv1/im/#im_2>
# start_session セッション開始,通常は配列でプッシュされ、後にウェルカムメッセージが続きます
type: "start_session",
data:
content: "会話開始"
# transfer セッションが転送されました,通常は配列でプッシュされ、後に転送内容のメッセージが続きます 例: 'セッション転送成功、カスタマーサポートxxがご対応いたします'
type: "transfer",
data:
content: "セッション転送"
type: "info_transfer",
data:
content: "カスタマーサポートJerry213がセッションを転送しました"
type: "close",
data:
content: "セッション終了"
ロボットQ&A評価
パラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | アプリ側の顧客一意識別子 |
| message_id | 文字列 | はい | 評価対象のロボット回答のメッセージID |
| question_id | 整数 | はい | 質問ID |
| useful | ブール | はい | 質問が役に立ったかどうか |
戻り値
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表します |
urobotロボットセッション評価(urobot使用時)
POST /im/sessions/robot_survey
パラメータ
| 属性名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | アプリ側の顧客一意識別子 |
| im_sub_session_id | 整数 | はい | セッションID |
| option_id | 整数 | はい | 評価オプションID (2:満足 3:普通 4:不満足) |
| remark | 文字列 | いいえ | 評価備考 |
| robot_id | 整数 | はい | UdeskロボットID(システム内の インスタントメッセージ->IMロボット モジュールで取得) |
| scene_id | 整数 | はい | Udeskロボット対応シーンID |
返却データ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表す |
| message | 文字列 | 返却メッセージ |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/sessions/robot_survey?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
\
-X POST \
-H 'content-type: application/json' \
-d '{
"customer_token":"1234121123123",
"im_sub_session_id":101,
"option_id":2,
"robot_id":1101,
"scene_id":39,
"remark":"非常满意"
}'
レスポンス
{
"code": 1000,
"message": "評価いただきありがとうございます"
}
セッション評価(カスタマーサポート評価)
POST /im/sessions/survey
リクエストパラメータ
| パラメータ名 | 必須 | タイプ | 説明 |
|---|---|---|---|
| im_sub_session_id | はい | 整数 | セッションID |
| option_id | はい | 整数 | 評価オプションID |
| remark | いいえ | 文字列 | 評価備考 |
| resolved_state_v2 | いいえ | 整数 | 解決済みかどうかのオプション値 0(オプション1は解決済みを表す)1(オプション2は未解決を表す) |
- 注:option_idの取り得る値の範囲は、セッション作成時に返される評価IDを参照してください。具体的にはsurvey_optionsの例を参照し、まずセッション作成時に返されるパラメータshow_typeの種類を確認し、IDの取り得る値の範囲は、現在の満足度種類内のoptionsパラメータ中のIDとなります。
返却データ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数型 | 実行結果コード、1000は成功を表します |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/sessions/robot_survey?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
\
-X POST \
-H 'content-type: application/json' \
-d '{
"im_sub_session_id":1001001000,
"option_id":"111"
}'
返却
{
"code": 1000,
"message": "評価いただきありがとうございます"
}
問題評価(urobot専用)
POST /im/messages/answer_survey
リクエストパラメータ
| 属性名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | アプリケーション側の顧客一意識別子 |
| messgae_id | 整数型 | はい | 問題の回答が含まれるメッセージID |
| im_sub_session_id | 整数型 | はい | セッションID |
| option_id | 整数型 | はい | 評価オプションID(1は満足、2は不満足、デフォルトは満足) |
| robot_id | 整数型 | はい | UdeskロボットID |
| scene_id | 整数型 | はい | Udeskロボット対応シーンID |
返却データ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数型 | 実行結果コード、1000は成功を表します |
| message | 文字列型 | 返却情報 |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/messages/answer_survey?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
\
-X POST \
-H 'content-type: application/json' \
-d '{
"customer_token":"123411111",
"messgae_id":111,
"im_sub_session_id":11,
"option_id":1,
"robot_id":12,
"scene_id":1
}'
返却
{
"code": 1000,
"message": "評価いただきありがとうございます"
}
フロー問題インターフェース
POST /im/messages/flow
urobot専用
リクエストパラメータ
| 属性名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | アプリ側顧客の一意識別子 |
| im_sub_session_id | 整数 | はい | セッションID |
| flow_id | 整数 | はい | 選択されたflow_id |
| robot_id | 整数 | はい | UdeskロボットID |
| scene_id | 整数 | はい | Udeskロボット対応シーンID |
flow_idの取得方法:
プッシュメッセージに messages.flowContent フィールドがあり、かつタグに data-type="2" が含まれている場合、このインターフェースを呼び出すことができます。
例:
<p><b data-type="2" class="flow-item" data-id="81" data-robotid="54">フロー項目Aサブ項目-1</b></p><p>フロー項目Aサブ項目-2<br></p>
<p><b data-type="1" class="flow-item" data-id="307" data-robotid="54">分類問題A</b></p><p>分類問題B</p>
フロー項目Aサブ項目-1 をクリックした場合、flow_id=81 を使用してこのインターフェースを呼び出すことができます。
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表します |
プッシュデータについては、urobot返信メッセージ通知インターフェースのレスポンスを参照してください。
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/messages/flow?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
\
-X POST \
-H 'content-type: application/json' \
-d '{
"customer_token":"1234121123123",
"messgae_id":1001,
"im_sub_session_id":17001700,
"option_id":1,
"robot_id":1,
"scene_id":1
}'
レスポンス
{
"code": 1000
}
ユーザークリック行動インターフェース
POST /im/messages/hit
リクエストパラメータ
| 属性名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| customer_token | 文字列 | はい | アプリ側顧客の一意識別子 |
| im_sub_session_id | 整数 | はい | セッションID |
| message_id | 整数 | はい | ロボット回答のメッセージID |
| robot_id | 整数 | はい | ロボットID |
| question | 整数 | いいえ | 質問内容 |
| query_type | 整数 | はい | クリックタイプ 6:よくある質問クリック 7:提案リストクリック |
| ### レスポンスデータ |
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数型 | 実行結果コード、1000は成功を表します |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/messages/hit?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2 \
-X POST \
-H 'content-type: application/json' \
-d '{
"customer_token":"111",
"message_id":1,
"im_sub_session_id":10,
"robot_id":1,
"scene_id":1,
"question_id":1,
"query_type":1
}'
レスポンス
{
"code": 1000
}
urobotリストの取得
GET /im/urobots
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数型 | 実行結果コード、1000は成功を表します |
| message | 文字列型 | レスポンス結果メッセージ |
| urobot_list | オブジェクト配列 | ロボットリストの詳細情報 |
urobot_list
| 属性名 | タイプ | 説明 |
|---|---|---|
| id | 整数型 | urobotロボットID |
| name | 文字列型 | ロボット名 |
| logo | 文字列 | ロボットアイコン |
| scene_list | オブジェクト配列 | 適したシーン情報、id(シーンID)、name(シーン名)を含む |
| created_at | 文字列 | ロボットの作成時間 |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/urobots?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
レスポンス
{
"code": 1000,
"message": "リクエスト成功",
"urobot_list": [
{
"id": 2,
"name": "デフォルトロボット",
"logo": "",
"scene_list": [
{
"id": 114,
"name": "デフォルトシーン"
},
{
"id": 116,
"name": "システムデフォルトシーン"
}
],
"created_at": "2018-01-23T10:55:20.000+08:00"
},
{
"id": 3,
"name": "テスト",
"logo": "",
"scene_list": [
{
"id": 120,
"name": "システムデフォルトシーン"
}
],
"created_at": "2018-02-05T11:25:30.000+08:00"
}
]
}
人工転送統計インターフェース(urobot使用)
POST /im/sessions/transfer_survey
リクエストパラメータ
| パラメータ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| im_sub_session_id | 整数 | はい | セッションID |
| robot_id | 整数 | はい | ロボットID |
| scene_id | 整数 | はい | ロボットシーンID |
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | ステータス |
| message | 文字列 | リクエスト結果 |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/sessions/transfer_survey?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
\
-X POST \
-H 'content-type: application/json' \
-d '{
"im_sub_session_id":"111",
"robot_id":1,
"scene_id":10
}'
レスポンス
{
"code": 1000,
"message": "success"
}
待ち行列ステータス照会
GET /im/queue_status
リクエストパラメータ
| パラメータ名 | 必須 | 説明 |
|---|---|---|
| customer_token | はい | アプリ側顧客の一意識別子 |
レスポンスデータ
| 属性名 | タイプ | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表す |
| status | 文字列 | 待ち行列ステータス, '待ち行列中', '未待ち行列', 'セッション中', '割り当て中' |
| count | 整数 | 待ち行列位置 |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/queue_status?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
&customer_token=1234121123123
レスポンス
{
"code": 1000,
"status": "未待ち行列",
"count": 0
}
顧客ステータス照会
顧客がセッション中かどうかを確認するために使用され、customer_token / web_token / sdk_token による顧客照会をサポートします。
GET /im/customer_status
リクエストパラメータ
| パラメータ名 | 必須 | 説明 |
|---|---|---|
| customer_token | いいえ | OpenApi 顧客一意識別子 |
| web_token | いいえ | web 顧客一意識別子 |
| sdk_token | いいえ | sdk 顧客一意識別子 |
| session_key | いいえ | web_token が存在する場合、複数セッションの異なるセッション状態をサポート |
注: customer_token/web_token/sdk_tokenのいずれか1つが必須です。値がある最初のパラメータが順番に使用されます。
レスポンスデータ
| 属性名 | 型 | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功を表します |
| status_code | 整数 | 0,1,2,3 |
| status | 文字列 | 'セッションなし','セッション中','待機中','無効な顧客' |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/customer_status?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
&customer_token=1234121123123&session_key=179306259
レスポンス
{
"code": 1000,
"status_code": 0,
"status": "セッションなし"
}
エージェントステータス照会
現在のすべてのエージェントのオンラインステータスを確認します。
GET /im/agent_status
リクエストパラメータ
| パラメータ名 | 必須 | 説明 |
|---|---|---|
| group_id | いいえ | 特定のエージェントグループのみを表示する場合 |
指定がない場合は、すべてを返します。
レスポンスパラメータ
| 属性名 | 型 | 説明 |
|---|---|---|
| code | 整数 | 実行結果コード、1000は成功、11012は指定されたグループが存在しないことを表します |
| agents | 配列 | エージェントデータを返します。詳細はエージェントステータス詳細を参照してください |
| #### エージェントステータスの詳細 |
| 属性名 | タイプ | 説明 |
|---|---|---|
| id | 整数型 | |
| name | 文字列 | エージェント名 |
| nick | 文字列 | エージェントのニックネーム。顧客に表示される。空の場合はエージェント名が表示される |
| avatar | 文字列 | エージェントのアバター |
| im_status | 文字列 | オンラインステータス online/busy/offline (オンライン/取り込み中/オフライン) |
| im_custom_status | 文字列 | カスタムステータス。im_statusがbusyの場合のみ有効 |
| im_session_num | 整数型 | 現在の対応人数。im_statusがonline/busyの場合のみ有効。0の場合や数値があっても意味を持たない場合がある |
| im_max_join_num | 整数型 | エージェントの最大対応人数。im_statusがonline/busyの場合のみ有効。0の場合や数値があっても意味を持たない場合がある |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/agent_status?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
&group_id=37540
レスポンス
{
"code": 1000,
"agents": [
{
"id": 43230,
"name": "張雪松",
"im_nick": "張",
"avatar": "",
"profile": "all",
"im_status": "offline",
"im_custom_status": "",
"im_session_num": 1,
"im_max_join_num": 10
},
{
...
},
...
]
}
放棄待機クエリ
待機を放棄したユーザー情報を取得するために使用されます
リクエスト
GET /im/im_queues
パラメータ
| パラメータ名 | 必須 | 説明 |
|---|---|---|
| start_time | はい | 開始時間 |
| end_time | はい | 終了時間 |
| page | いいえ | ページ番号、1から開始、デフォルトは1 |
| per_page | いいえ | 1ページあたりの件数、デフォルト30、最大100 |
- 注:他のツールでリクエストを送信する場合、リクエストヘッダーにContent-Type=application/jsonを設定してはいけません。設定するとエラーが発生します。
レスポンスデータ
| 属性名 | 型 | 説明 |
|---|---|---|
| code | 整数型 | 実行結果コード、1000は成功を表します |
| shut_queues | 配列 | 顧客リスト |
shut_queues要素のデータ構造
| 属性名 | 型 | 説明 |
|---|---|---|
| customer_id | 整数型 | id |
| customer_name | 文字列 | ユーザー表示名 |
| channel | 文字列 | チャネル, web wechat ios android weibo api mchat |
| queue_start_time | 文字列 | 待機開始時間 |
| queue_seconds | 文字列 | 待機時間 |
| queue_name | 文字列 | 待機キュー名 |
| current_page | 整数型 | 現在のページ数 |
| total_pages | 整数型 | 総ページ数 |
| count | 整数型 | 当ページの総件数 |
例
リクエスト
curl https://demo.udesk.cn/open_api_v1/im/im_queues?email=admin@udesk.cn×tamp=1494474404&sign=6892f1b794071c260e1b1eac15df588fc919c9e86eb742affaa742ad6c03cb52&nonce=2d931510-d99f-494a-8c67-87feb05e1594&sign_version=v2
&start_time=2019-02-10&end_time=2019-02-15
レスポンス
{
"code": 1000,
"shut_queues": [
{
"id": 123,
"customer_id": 1234,
"channel": "web",
"queue_start_time": "2022-03-25T15:55:20.000+08:00",
"queue_seconds": 27,
"queue_name": "xxx",
"customer_name": {
"id": 12345,
"email": "123.123.123.123@temp.com",
"signature": null,
"notify": null,
"weibo_name": null,
"weixin_openid": null,
"nick_name": "xxx",
"weibo_id": null,
"company_id": 1,
"created_at": "2022-03-25T15:55:03.000+08:00",
"updated_at": "2022-03-25T15:55:04.000+08:00",
"organization": null,
"cellphone": null,
"telephone": null,
"weixin_id": null,
"authentication_token": null,
"description": "IMユーザー:ip(123.123.123.123)",
"qq": null,
"platform_id": 4,
"ticket_show_filters": {
"show_user": "true",
"show_assignee": "true",
"show_created_at": "true",
"show_priority": "true",
"show_status": "true",
"show_platform": "true"
},
"wechat_status": "offline",
"custom_fields": {
"SelectField_3999": [
"0"
]
},
"leave_msg_expire_at": null,
"customer_import_record_id": null,
"web_token": "1f85c1b8-61b9-44f3-3468-9f5w164d099f",
"sdk_token": null,
"is_anonym": false,
"owner_id": null,
"ip": "123.123.123.123",
"from": "xxxxx",
"weibo_status": null,
"weibo_leave_msg_expire_at": null,
"deleted": false,
"weixin_api_status": null,
"weixin_appid": null,
"weixin_appsecret": null,
"owner_group_id": null,
"source_channel": "web_im",
"weixin_channel_id": null,
"province": "xx",
"city": "xx",
"phone_service_provider": null,
"isp": "xxx",
"last_contact_at": null,
"first_contact_at": null,
"contact_count": null,
"last_contact_at_via_phone": null,
"first_contact_at_via_phone": null,
"contact_count_via_phone": null,
"last_contact_at_via_im": null,
"first_contact_at_via_im": null,
"contact_count_via_im": null,
"latest_device_info": {
"os": "Win7",
"browser": "Chrome99",
"resolution": "1920*1080"
},
"organization_id": null,
"is_blocked": false,
"generated_channel": null,
"weibo_channel_id": null,
"level": "normal",
"open_api_token": null,
"current_ticket_id": null,
"mchat_openid": null
},
"im_web_plugin_id": 16,
"menu_names": "xxx"
}
],
"meta": {
"current_page": 1,
"total_pages": 1,
"count": 1
}
}
IM構造化メッセージの送信
このインターフェースは、IMを通じて顧客に構造化メッセージを送信するために使用されます。 頻度制限:1回/2秒
認証
署名方法については、認証方法を参照してください。ただし、以下の2点に注意する必要があります:
- Query Stringの順序は、im_sub_session_id、customer_id、agent_id、timestampでなければなりません。
- 共有シークレットキーを「構造化メッセージ KEY」に置き換えてください。これは、ウェブサイトの管理画面【管理センター】->【チャネル管理】->【インスタントメッセージング】->【構造化メッセージ】で確認できます。
リクエスト方法
POST /im/sessions/struct_messages
リクエストパラメータ(Query String)
| パラメータ名 | 必須 | 説明 |
|---|---|---|
| im_sub_session_id | はい | セッションID |
| customer_id | はい | 顧客ID |
| agent_id | はい | サポート担当者ID |
| timestamp | はい | タイムスタンプ |
注:APIで作成された顧客はこのインターフェースでは使用できません
リクエストパラメータ(Request Body)
| パラメータ名 | 必須 | タイプ | 説明 |
|---|---|---|---|
| jid_resource | いいえ | 文字列 | SDKチャネルソース |
| data | はい | オブジェクト | 構造化メッセージ |
data
| パラメータ名 | 必須 | タイプ | 説明 |
|---|---|---|---|
| title | はい | 文字列 | タイトル |
| description | はい | 文字列 | 説明文 |
| img_url | はい | 文字列 | 表示画像のリンク |
| buttons | はい | 配列 | ボタンリスト |
buttons 要素の構造
| パラメータ名 | 必須 | タイプ | 説明 |
|---|---|---|---|
| type | はい | 文字列 | ボタンタイプ |
| text | はい | 文字列 | ボタンタイトル |
| value | はい | 文字列 | ボタン値 |
| callback_name | いいえ | 文字列 | コールバック名(typeがsdk_callbackの場合のみ有効) |
type の取り得る値
| 値 | 意味 |
|---|---|
| link | リンクボタン |
| phone | 電話ボタン |
| sdk_callback | コールバックボタン(SDKのみサポート) |
| ### レスポンスデータ |
| 属性名 | タイプ | 説明 |
|---|---|---|
| status | 整数 | 実行結果コード、1000 は成功を表します |
| message | 文字列 | 実行結果の説明 |
例
curl https://demo.udesk.cn/open_api_v1/im/sessions/struct_messages?im_sub_session_id=1&customer_id=1&agent_id=1×tamp=1494814031&sign=129da7df812jdfsa9912jfdadf81 \
-X POST \
-H 'content-type: application/json' \
-d '
{
"data": {
"title": "APIによる構造化メッセージ送信テスト",
"description": "このメッセージはAPIから送信されました",
"img_url": "https://www.udesk.cn/images/index/banner01.jpg",
"buttons": [
{
"type": "link",
"text": "アクセス",
"value": "https://www.udesk.cn"
},
{
"type": "phone",
"text": "電話をかける",
"value": "010-12345678"
},
{
"type": "sdk_callback",
"callback_name": "sdk_callback",
"text": "コールバックボタン",
"value": "v1"
}
]
}
}'
レスポンス
{
"status": 1000,
"message": "送信成功"
}
H5オフラインプッシュ
顧客が自社アプリに当社のH5 IMページを埋め込んでいる場合、顧客が他のページに切り替えたりアプリを終了したりする際に、オフラインメッセージを顧客にプッシュする必要があります
このインターフェースは、IMを通じて顧客に構造化メッセージを送信するために使用されます。 H5 URLが有効化され設定されている場合のみ有効です。H5_PUSH_URLは顧客がカスタマイズするものであり、公衆インターネットからアクセス可能である必要があります。
リクエストメソッド
POST {H5_PUSH_URL}
リクエストパラメータ(Request Body)
| パラメータ名 | 必須 | 説明 |
|---|---|---|
| web_token | はい | 顧客の一意識別子 |
| customer_token | はい | 顧客の一意識別子 |
| session_key | いいえ | セッション識別子、顧客の一意識別子+セッション識別子で一意の顧客を表します |
| messages | はい | メッセージボディ、配列構造 |
| message | はい | メッセージ |
| #### messages 各要素の構造 |
| パラメータ名 | 必須 | タイプ | 説明 |
|---|---|---|---|
| message_created_at | はい | 文字列 | メッセージ送信時間 |
| agent_avatar | いいえ | 文字列 | カスタマーサポートのアバター、通常は画像のリンク |
| im_web_plugin_id | はい | 文字列 | ウェブプラグインID |
| agent_id | はい | 文字列 | カスタマーサポートID |
| agent_name | はい | 文字列 | カスタマーサポート名 |
| sender | はい | 文字列 | メッセージ送信者 agent:カスタマーサポート customer:顧客 system:システム |
| message_id | はい | 文字列 | メッセージの一意識別子 |
| im_sub_session_id | はい | 文字列 | セッションID、セッションの一意のマーク |
| type | はい | 文字列 | メッセージタイプ create:セッション作成 close:セッション終了 off_push:オフラインメッセージ |
| data | はい | object | メッセージデータ |
data
| パラメータ名 | 必須 | タイプ | 説明 |
|---|---|---|---|
| content | はい | 文字列 | メッセージ内容 |
| msg_close | いいえ | boolean | メッセージが閉じられているかどうか |
message
| パラメータ名 | 必須 | タイプ | 説明 |
|---|---|---|---|
| message_created_at | はい | 文字列 | メッセージ送信時間 |
| agent_avatar | いいえ | 文字列 | カスタマーサポートのアバター、通常は画像のリンク |
| im_web_plugin_id | はい | 文字列 | ウェブプラグインID |
| agent_id | はい | 文字列 | カスタマーサポートID |
| agent_name | はい | 文字列 | カスタマーサポート名 |
| sender | はい | 文字列 | メッセージ送信者 agent:カスタマーサポート customer:顧客 system:システム |
| message_id | はい | 文字列 | メッセージの一意識別子 |
| im_sub_session_id | はい | 文字列 | セッションID、セッションの一意のマーク |
| type | はい | 文字列 | メッセージタイプ create:セッション作成 close:セッション終了 off_push:オフラインメッセージ |
| content | はい | object | メッセージの内容、リッチテキストなどの情報を含む |
| #### コンテンツ |
| パラメータ名 | 必須 | タイプ | 説明 |
|---|---|---|---|
| type | いいえ | 文字列 | メッセージタイプ、message(テキストメッセージ)、image、video、fileなど |
| font | いいえ | 文字列 | フォント |
| platform | いいえ | 文字列 | プラットフォーム、web、wechat、weixin、weixin_mini、qywx、facebook、line、what_app、tiktok、rpa、feishuなど、今後順次追加予定 |
| version | number | 文字列 | バージョン番号 |
| seq_num | いいえ | 文字列 | シーケンス番号 |
| auto | いいえ | boolean | true、false、自動送信メッセージかどうか |
| data | はい | object | メッセージデータ |
返却データ、H5_PUSH_URL 提供者に依存し、Udeskは制限しません
| 属性名 | タイプ | 説明 |
|---|---|---|
例
curl {H5_PUSH_URL} \
-X POST \
-H 'content-type: application/json' \
-d '
{
"web_token": "6acbf1ea60ee2635b30eae579b5a7bed",
"customer_token": "6acbf1ea60ee2635b30eae579b5a7bed",
"messages": [
{
"message_created_at": "2023-11-28 19:46:21",
"im_web_plugin_id": 119681,
"agent_id": 1601824,
"agent_name": "兜小炜",
"data": {
"content": "愿平安顺遂!期待下次与您相遇~",
"msg_close": true
},
"sender": "system",
"message_id": "udesk_12551701171980650",
"im_sub_session_id": 4594173144,
"type": "off_push"
}
],
"message": {
"message_created_at": "2023-11-28 19:46:21",
"im_web_plugin_id": 119681,
"agent_id": 1601824,
"agent_name": "兜小炜",
"sender": "system",
"message_id": "udesk_12551701171980650",
"im_sub_session_id": 4523173134,
"type": "off_push",
"content": {
"type": "message",
"font": "",
"data": {
"content": "愿平安顺遂!期待下次与您相遇~",
"msg_close": true
},
"platform": "web",
"version": 1,
"seq_num": "",
"auto": true
}
}
}'
返却
{
"xxx": "xxx"
}
カスタム IM 構造化メッセージリストページ
カスタム IM 構造化メッセージリストページは、️ お客様が提供する HTML ページであり、よく使用される構造化メッセージを含んでいます。これにより、カスタマーサポート担当者は Udesk IM コンソールで素早く選択し、顧客に送信することができます。
カスタム IM 構造化メッセージリストページを使用するには、以下の2つの手順が必要です:
- まず、HTML ページを作成し、そのページのパブリックネットワークアドレスを提供する必要があります。
- Udesk 【管理センター】-【構造化メッセージ】で「埋め込みリンク」を設定します。
HTML ページの作成
Udesk は、カスタマーサポート担当者が構造化メッセージを選択する必要があるときに、お客様が提供した HTML ページを iframe 方式で表示し、以下のパラメータを Query String として HTML ページに渡します:
| パラメータ名 | 説明 |
|---|---|
| im_sub_session_id | セッション ID |
| customer_id | 顧客 ID |
| agent_id | カスタマーサポート担当者 ID |
| jid_resource | SDK ソース |
| timestamp | タイムスタンプ |
さらに、認証方法に従って計算された署名も、sign パラメータとして一緒に渡されます。
署名を計算する際は、認証方法とは少し異なり、IM 構造化メッセージ送信インターフェースと一致します。 リクエストを受信した後、HTML ページを返すかどうかを決定する前に、sign 値が有効かどうかを検証することをお勧めします。
同時に、HTML ページ内では、上記のパラメータを使用してIM 構造化メッセージ送信インターフェースを呼び出し、構造化メッセージの送信を完了することができます。
設定
- 管理者として Udesk システムにログインします。
- 【管理センター】-【チャネル管理】-【インスタントメッセージング】-【構造化メッセージ】を開きます。
- 「埋め込みリンク」を、お客様が提供する HTML ページのパブリックネットワークアドレスに設定します。
例
【管理センター】での設定が以下のようになっていると仮定します:
- 埋め込みリンク:
https://www.demo.com/struct_messages - KEY:
708ff6dc-41d5-4med-9ebc-0388zz9d76f1
カスタマーサポート担当者が IM ワークベンチのチャットインターフェースで「構造化メッセージ」リストアイコンをクリックすると、Udesk は以下のようなアドレスを含む iframe ページを表示します:
https://www.demo.com/struct_message?im_sub_session_id=1&customer_id=1&agent_id=1&jid_resource=12dsafdaslj129das-12fds912-12dsa×tamp=1484272693&sign=4666293b3dfe91aa97179dc701be7afc
注意:この中の sign の計算方法は以下の通りです:
md5("im_sub_session_id=1&customer_id=1&agent_id=1×tamp=1484272693&708ff6dc-41d5-4med-9ebc-0388zz9d76f1")
#=> 4666293b3dfe91aa97179dc701be7afc
FAQ
このAPIインターフェースを使用したいのですが、どのような条件が必要ですか?
このAPIインターフェースは高度なインターフェースであり、開発作業が多く、要求が高いです。以下の条件を満たす必要があります:
- インスタントメッセージングプラットフォームを自社構築している必要があります。
- Udesk はお客様のサーバーへのプッシュのみを担当し、お客様の顧客へのプッシュは担当しません。
- すでにインスタントメッセージングプラットフォームを所有しているか、自社構築する能力があるか、またはサードパーティプラットフォームを使用している必要があります。
- お客様の顧客がすべて 微信/微博 プラットフォームである場合は、すでにインスタントメッセージングプラットフォームを所有していると見なすことができます。
- 強力なバックエンド開発能力が必要であり、以下の作業を行う必要があります:
- 顧客情報を維持し、ユーザーを作成/更新して Udesk プラットフォームに登録する。
- 顧客のセッションを維持する。
- 会話内容を維持し、カスタマーサポート担当者が顧客に返信した会話を顧客にプッシュする。
- [オプション] 満足度の表示と結果を維持する。
指定サーバーアドレスへのプッシュリクエストの形式は何ですか?
POSTリクエスト、JSON形式です。
セッションをリクエストした後、「顧客が存在しません」と返ってくるのはなぜですか?
セッションをリクエストする前に、顧客を作成するリクエストが必要です。詳細は以下をご覧ください。
当社のサーバーがサポート担当からの返信メッセージを受信できません。Udeskがプッシュしているかどうかを確認するにはどうすればよいですか?
以下のことをお勧めします。
- nginx/apacheをフロントエンドとして使用してください。これにより、バックエンドアプリケーションが正しく処理しているかどうかに関わらず、フロントエンドのログでリクエストを受信したかどうかを確認できます。
- アプリケーションサーバーでは、まず受信したリクエストのbodyをログに出力して、リクエストが届いているかどうかを確認してから、ビジネスロジックの開発を進めてください。
返信メッセージが複数返ってくることがあるのはなぜですか?
- 一部のイベントとメッセージが強く順序付けられている場合があります。例えば、セッション開始イベントとウェルカムメッセージなどです。