メッセージインターフェースを介したWeChat連携方法
一、概要
WeChat開発者管理画面で他の開発者のURLとTokenをバインドする際、Udeskサービスを同時に利用したい場合は、サーバーを介してUdeskメッセージインターフェースと連携することで実現できます。
Udeskメッセージインターフェースと連携するサーバーを介すると、メッセージの受信と送信はすべてサーバーを経由します。(このうち、WeChat向けに特別な最適化が行われており、tokenを取得することでWeChat仕様の画像メッセージを直接生成でき、サーバーが再度WeChatにアップロードする必要はありません)
管理者はUdesk管理画面【管理センター - インスタントメッセージング - メッセージインターフェース連携】にログインします。

二、メッセージ受信チャネルの正常性テスト
インターフェース疎通テスト:
curl https://xxxx.udesk.cn/spa1/im_callback/test?number=13574221234&email=894733082@qq.com×tamp=20151124141451&sign=07131700A29AD987F5D9F0463CE7EFC7
入力パラメータ
number=13574221234&email=894733082@qq.com×tamp=20151124141451&sign=07131700A29AD987F5D9F0463CE7EFC7
パラメータ説明
| パラメータ名 | 説明 |
|---|---|
| number | 電話番号 |
| メールアドレス | |
| timestamp | タイムスタンプ |
| sign | 上記のパラメータから生成されたMD5の結果 |
Sign 生成方法
- sign=md5(number=13574221234&email=894733082@qq.com×tamp=20151124141451&secret).upper
- MD5後に大文字に変換
- secret: 【管理センター - インスタントメッセージング - メッセージインターフェース連携】内のメッセージプッシュサーバーアドレスに対応する"KEY"
返却パラメータ
成功:{ "success": true }
失敗:
{
"success": false,
"msg": "sign検証に失敗しました"
}
| パラメータ名 | 説明 |
|---|---|
| success | True/false、リクエスト成功/失敗 |
| msg | 結果説明(文字列形式) |
三、メッセージ受信インターフェース
顧客からカスタマーサポートへのメッセージ送信
1、テキストメッセージの受信
メッセージ受信インターフェース
POST http://xxxx.udesk.cn/spa1/im_callback?number=13574221234&email=894733082@qq.com×tamp=20151124141451&sign=07131700A29AD987F5D9F0463CE7EFC7
リクエストパラメータ(Request Body)例
<xml>
<FromUserName>openid</FromUserName>
<Number>phone number</Number>
<Email>894733082@qq.com</Email>
<Content>this is a test</Content>
<CreateTime>1548348776</CreateTime>
<MsgType>text</MsgType>
<MsgId>1548348777</MsgId>
</xml>
パラメータ説明
| パラメータ名 | 説明 |
|---|---|
| FromUserName | 送信者アカウント(OpenID) |
| Number | 顧客の携帯電話番号または電話番号 |
| 顧客のメールアドレス | |
| Content | メッセージ内容 |
| CreateTime | メッセージ作成時間 (整数型) |
| MsgType | text |
| MsgId | メッセージID、64ビット整数型 |
| ### 2、画像メッセージの受信 |
メッセージ受信インターフェース
POST http://xxxx.udesk.cn/spa1/im_callback?number=13574221234&email=894733082@qq.com×tamp=20151124141451&sign=07131700A29AD987F5D9F0463CE7EFC7
リクエストパラメータ(Request Body)例
<xml>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<Number>phone number</Number>
<Email>894733082@qq.com</Email>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this is a url]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>
<MsgId>1234567890123456</MsgId>
</xml>
パラメータ説明
| パラメータ名 | 説明 |
|---|---|
| FromUserName | 送信者アカウント(OpenID) |
| Number | 顧客の携帯電話番号または電話番号 |
| 顧客のメールアドレス | |
| CreateTime | メッセージ作成時間(整数型) |
| MsgType | image |
| PicUrl | 画像リンク |
| MediaId | 画像メッセージのメディアID。マルチメディアファイルダウンロードインターフェースを呼び出してデータを取得できます。 |
| MsgId | メッセージID(64ビット整数型) |
3、音声メッセージの受信
メッセージ受信インターフェース
POST http://xxxx.udesk.cn/spa1/im_callback?number=13574221234&email=894733082@qq.com×tamp=20151124141451&sign=07131700A29AD987F5D9F0463CE7EFC7
リクエストパラメータ(Request Body)例
<xml>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<Number>phone number</Number>
<Email>894733082@qq.com</Email>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<MsgId>1234567890123456</MsgId>
</xml>
パラメータ説明
| パラメータ名 | 説明 |
|---|---|
| FromUserName | 送信者アカウント(OpenID) |
| Number | 顧客の携帯電話番号または電話番号 |
| 顧客のメールアドレス | |
| CreateTime | メッセージ作成時間(整数型) |
| MsgType | 音声の場合はvoice |
| MediaId | 画像メッセージのメディアID。マルチメディアファイルダウンロードインターフェースを呼び出してデータを取得できます。 |
| Format | 音声フォーマット(例:amr) |
| MsgId | メッセージID(64ビット整数型) |
4、メッセージ受信時のResponse 結果
パラメータ説明
| パラメータ名 | 説明 |
|---|---|
| status | カスタマーサポートの状態(queuing/chatting/offline/unknown: 待機中 / チャット中 / オフライン / 不明なエラー) |
| turn | 待機順位(何番目に並んでいるか) |
| agent_name | カスタマーサポート担当者名 |
| msg | string形式のメッセージ |
| #### サンプル |
{
"status": "chatting",
"turn": 0,
"agent_name": "テストサポート1",
"msg": "テストサポート1がご対応いたします!"
}
四、メッセージプッシュ
サポート担当者が顧客に返信メッセージを送信する際、返信メッセージを設定されたアドレスにプッシュします。
プッシュアドレスの設定方法
- 【管理センター > チャネル管理 > インスタントメッセージング > メッセージインターフェース接続】ページのプッシュアドレス欄にプッシュURLを入力します。
1、テキスト形式メッセージのプッシュ
データ形式サンプル
{status: 'chatting',
turn: 0,
agent_name: 'Tom',
msg: {
touser: customer_weixin_openid,
msgtype: ‘text’,
text: {content: "こんにちは、サポート担当者 Tom がオンラインでご対応いたします" }
},
kw_on: enabled,
kw_on2: enabled,
kw_msg: '' }
パラメータ説明
| パラメータ名 | 説明 |
|---|---|
| status | サポート担当者ステータス、queuing/chatting/offline/unknown( 順番待ち / チャット中 / オフライン / 不明なエラー ) |
| turn | 順番待ちの位置 |
| agent_name | サポート担当者名 |
| msg | JSON形式メッセージ |
| kw_on | 多忙状態、キーワードが有効かどうか true/false |
| kw_on2 | オフライン状態、キーワードが有効かどうか true/false |
| kw_msg | キーワードマッチング返信 |
JSON形式msgメッセージ説明
| パラメータ名 | 説明 |
|---|---|
| touser | 顧客のWeChat ID |
| msgtype | メッセージタイプ( text/ image ) |
| text | サポート担当者名 |
| msg | テキストタイプ返信: {content: "こんにちは、サポート担当者 Tom がオンラインでご対応いたします" } |
2、画像形式メッセージのプッシュ
形式サンプル
{status: 'chatting',
turn: 0,
agent_name: 'Tom',
msg: {
touser: customer_weixin_openid,
msgtype: 'image',
image: {media_id: 123432443 }
},
kw_on: enabled,
kw_on2: enabled,
kw_msg: '' }
パラメータ説明
| パラメータ名 | 説明 |
|---|---|
| status | サポート担当者ステータス、queuing/chatting/offline/unknown( 順番待ち / チャット中 / オフライン / 不明なエラー ) |
| turn | 順番待ちの位置 |
| agent_name | サポート担当者名 |
| msg | JSON形式メッセージ |
| kw_on | 多忙状態、キーワードが有効かどうか true/false |
| kw_on2 | オフライン状態、キーワードが有効かどうか true/false |
| kw_msg | キーワードマッチング返信 |
| #### JSON形式msgメッセージの説明 | |
| パラメータ名 | 説明 |
| -------- | :------ |
| touser | 顧客のWeChat ID |
| msgtype | メッセージタイプ image |
| image | 画像タイプの返信: {media_id: 123432443 } |
3、音声形式メッセージのプッシュ
形式例
{status: 'chatting',
turn: 0,
agent_name: 'Tom',
msg: {
touser: customer_weixin_openid,
msgtype: 'voice',
voice: {media_id: 123432443 }
},
kw_on: enabled,
kw_on2: enabled,
kw_msg: '' }
パラメータ説明
| パラメータ名 | 説明 |
|---|---|
| status | カスタマーサポートの状態、queuing/chatting/offline/unknown( 待機中 / チャット中 / オフライン / 不明なエラー ) |
| turn | 待機順位 |
| agent_name | カスタマーサポート担当者名 |
| msg | JSON形式メッセージ |
| kw_on | 繁忙状態、キーワードが有効かどうか true/false |
| kw_on2 | オフライン状態、キーワードが有効かどうか true/false |
| kw_msg | キーワードマッチング返信 |
JSON形式msgメッセージの説明
| パラメータ名 | 説明 |
|---|---|
| touser | 顧客のWeChat ID |
| msgtype | メッセージタイプ voice |
| voice | 音声タイプの返信: {media_id: 123432443 } |
五、Tokenの取得
メッセージプッシュアドレスを取得するためのtoken値を取得します - 注:対応する認証方法をプッシュアドレス設定で構成する必要があります。そうでない場合、認証は無効です。
リクエストURL:
GET http://xxxxxx.com/getAccessToken?from=udesk×tamp=12124234&sign=133d74d79aef117690f431f81d8df406
パラメータ説明
- from : 固定値、from=udesk
- timestamp: 現在のタイムスタンプ
- sign: from、timestamp、secretの3つのパラメータから生成されるmd5値、 secretの値、例:113490dee1b2d7a0f2d5fa3fa9bbd8b これにより、sign=md5(udesk&12124234&0113490dee1b2d7a0f2d5fa3fa9bbd8b) =133d74d79aef117690f431f81d8df406 が得られます。
返却JSON結果:
返却形式:
{
error_code: 0,
error_msg: "SUCCESS",
data:{
token: "rg9noa9Z9AqovM1bTJX_-5VUH9PCBlkQ5u91nEHJVJcu2fN"
}
}
パラメータ説明:
| パラメータ名 | 説明 |
|---|---|
| error_code | 値が0は成功、その他の値は失敗を表します。2は認証は成功したがtokenの取得に失敗したことを示します |
| error_msg | 返却されたエラーメッセージ |
| data | tokenを含む、つまりWeChatのaccess_token値 |
| #### 注意事項 | |
| + tokenの状態は貴社側で管理し、Udeskが即座に取得できるtokenが有効であることを保証してください。 | |
| + Udeskはtokenの値を保存せず、tokenの状態も保存しません。 |