メッセージ(Callback) 受信

    「Developers Console > Bot」で指定した URL(Bot サーバー)に対して、LINE WORKS プラットフォームからイベントオブジェクトを含む HTTP POST リクエストが送られます。

    トーク Bot が受信したメッセージやイベント情報を、受信サーバーへ転送します。

    参考

    HTTP POSTリクエストの処理が後続のイベントの処理に遅延を与えないよう、イベント処理を非同期化することを推奨します。

    現在、Callback イベントの種類 (type) には message / join / leave / joined / left / postback があります。 イベントの種類は、今後、追加される可能性があります。

    タイプ 説明
    message メンバーからのメッセージ
    join Bot が複数人トークルームに招待された
    leave Bot が複数人トークルームから退室した
    joined メンバーが Bot のいる複数人トークルームに参加した
    left メンバーが Bot のいる複数人トークルームから退室した
    postback postback タイプのメッセージ

    注意

    Bot サーバーが受信した HTTP POST リクエストは、LINE WORKS プラットフォームから送信されていない危険なリクエストの可能性があります。 必ず署名を検証してから、イベントオブジェクトを処理してください。

    Header Information

    ヘッダー情報は、下記の通りです。

    • Protocol: HTTPS
    • HTTP Method: POST
    • Content type: application/json; charset=UTF-8

    使用例は、下記の通りです。

    
    POST /callback HTTP/1.1
    Host: YOUR_SERVER_HOST_NAME
    Content-type: application/json; charset=UTF-8
    X-WORKS-Signature: /xZcekiWAICrwq5Dc+wBwBf6Gq33il-jRAo01KAVO3/U=
    X-WORKS-BotId: 123
    
    { "type":"message", … }
    

    注意

    Callback 情報はAPI 1.0と互換性がありません。「Developers Console > Bot」から該当する bot に設定された API interface での callback イベントオブジェクトを処理してください。

    メッセージサーバーから送信されたメッセージの改ざん有無を確認するには、ヘッダーに含まれる X-WORKS-Signature を用います。 確認プロセスは以下を参照してください。

    1. 「Developers Console > Bot」Botの詳細情報画面でBot Secretを取得します。

    2. Bot Secretを秘密鍵として利用し、メッセージサーバーから送られた body の内容を HMAC-SHA256 アルゴリズムでエンコードします。

    3. 上記の HMAC-SHA256 アルゴリズムでエンコードした結果を BASE64 エンコードします。

    4. X-WORKS-Signature のヘッダー値と比較し、同一であればメッセージは改ざんされていないと判断できます。

    Bot Secretを外部に流出させないよう注意してください。

    以下のサンプルコードは、Java でメッセージの改ざん有無を確認する例です。

    
    String botSecret = ...; 
    String httpRequestBody = ...; // Request body string
    SecretKeySpec key = new SecretKeySpec(botSecret.getBytes(), "HmacSHA256");
    Mac mac = Mac.getInstance("HmacSHA256");
    mac.init(key);
    byte[] source = httpRequestBody.getBytes("UTF-8");
    String signature = Base64.encodeBase64String(mac.doFinal(source));
    

    botIdは X-WORKS-BotId としてヘッダー情報に含まれています。

    Botがトークルームに招待された際の Callback メッセージ

    Bot のドメイン登録時に Bot リストに公開するよう設定した場合、メンバー側から Bot を選んで話しかけることができます。

    メンバーと Bot との初回トークを開始する画面で「利用開始」を押すと、自動的に「利用開始」というメッセージが送信されます。このとき、以下のように Bot 側には callback として content.postback に "start" を含めたメッセージが渡されます。

    
    {  
       "type":"message",
       "source":{  
          "userId":"c72af563-0f21-4736-11e4-045237113344",
          "domainId": 40029600
       },
       "issuedTime":"2022-01-04T05:16:05.716Z",
       "content":{  
          "type":"text",
          "text":"利用開始",
          "postback":"start"
       }
    }
    

    参考

    • 上記のサンプルで content.text の 「利用開始」の文字列は各メンバーの言語に合わせて変更されます。