ボットによるチャット送信
チャットタイプ
ボットチャットの送信方法は 2 種類あり、API 経由でボットチャットを送信する方法と、Webhook 経由でボットチャットを送信する方法があります。それぞれ、サポートされるチャットタイプとデータ形式が異なります。API 経由でのチャット送信を推奨します。
方法 1:API 経由
重要
- ユーザーとボットの個別チャットにおけるボットチャット:画像・音声・ファイルの送受信に対応しています。
- グループチャットにおけるボットチャット:画像・音声・動画・ファイルの送信に対応していますが、グループチャット内でユーザーがボットに対して音声・動画・ファイルを@メンションで送信することはできません。
対応 API
データ形式
- チャットテンプレート Key:チャットテンプレート Key とは、開発者がチャットを送信する際に使用する一意の識別子です。プログラムコードを記述する際に、事前に設定したチャットテンプレートを素早く参照できます。
-
チャットテンプレートパラメータ:チャットテンプレート内で事前定義されたプレースホルダーを置き換える実データです。例えば、
sampleTextというチャットテンプレート Key を使用する場合、contentフィールドの値を定義する必要があります。 -
例:社内アプリのボットがグループ内でテキストタイプを送信する HTTP のサンプルコードを提供します:
- チャットテンプレート Key:
"msgKey" : "sampleText" - チャットテンプレートパラメータ:
"msgParam" : "{\"content\":\"DingTalk、進歩を起こす\"}"
- チャットテンプレート Key:
Markdown でサポートされる構文
チャットタイプ sampleMarkdown における Markdown 構文の補足説明です。
方法 2:Webhook 経由
Webhook 方式はグループチャットでのみ対応しています。
テキスト text タイプ
リンク Link タイプ
このタイプは@メンションには対応していません。
Markdown タイプ
現在は Markdown 構文のサブセットのみ対応しており、対応する要素は以下の通りです:
ActionCard タイプ
-
全体遷移 ActionCard タイプ
-
独立遷移 ActionCard タイプ
FeedCard タイプ
このタイプは@メンションには対応していません。
グループにチャットを返信したくない場合は、以下の形式で返信します:
ボットによるチャット受信
ユーザーがグループボットを@メンションした場合、またはボットと個別チャットでメッセージを送信した場合、DingTalk はボットが受信したチャットを、開発者が設定したボットのコールバックサービスへ送信します。チャット本文
本例では text テキストタイプを例に説明します。HTTP コールバック方式を使用する場合、POST リクエストで DingTalk からプッシュされたチャットを受信します。チャットタイプ
ボットは現在、テキスト・音声・画像・ファイル・動画・リッチテキストタイプのチャット受信に対応しています。以下は、ボットが受信する各チャットタイプのフィールドの説明です。チャットタイプとチャット本文のフィールドが異なる以外は、その他のパラメータフィールドは上記のテーブルと同じです。テキストチャット
リッチテキストチャット
画像メッセージ
音声チャット
グループチャットにおいて、グループメンバーがボットを @メンションした場合、ボットは音声チャットの受信に対応していません。
動画メッセージ
グループチャットにおいて、グループメンバーがボットを @メンションした場合、ボットは動画メッセージの受信に対応していません。
ファイルメッセージ
グループチャットにおいて、グループメンバーがボットを @メンションした場合、ボットはファイルメッセージの受信に対応していません。
関連情報
社内アプリのボット作成 時に、チャット受信モードで HTTP モードを選択した場合、ボットの利用中、ボットがチャットを受信した際に、上記のチャット本文に加えて、以下の形式の HTTP header パラメータが存在します:
header 内の timestamp と sign を検証し、DingTalk からの正当なリクエストであるかを判断する必要があります。これは、他者が DingTalk を偽装して開発者の HTTPS サービスにデータを送信することを防ぐためです。具体的な検証ロジックは以下の通りです:
- timestamp とシステムの現在のタイムスタンプの差が 1 時間以上ある場合、不正なリクエストと見なします。
- sign が開発者自身が計算した結果と一致しない場合、不正なリクエストと見なします。
エラーコード
ボットの Webhook と Stream の使用量が上限を超えた場合、以下のような内容が表示されます:エラーの状態
グループチャット
個別チャット
エラーの説明
関連ドキュメント
- 社内ボットによるグループチャットメッセージの送信
- 社内ボットによる個別チャットメッセージの送信
- カスタムボットによるグループチャットメッセージの送信
- グループテンプレートボットによるグループチャットメッセージの送信