Bot Connector API を使用してメッセージにメディア添付ファイルを追加する
通常、ボットとチャネルが交換するのはテキスト文字列ですが、添付ファイルの交換もサポートされる一部のチャネルでは、ボットはよりリッチなメッセージをユーザーに送信できます。 たとえば、ボットはメディア添付ファイル (画像、ビデオ、オーディオ、ファイルなど) と リッチ カードを送信できます。 この記事では、Bot Connector サービスを使用してメッセージにメディア添付ファイルを追加する方法について説明します。
ヒント
各チャネルでサポートされている機能の詳細については、 チャネルのリファレンス 記事を参照してください。
メディア添付ファイルの追加
メッセージにメディア添付ファイルを追加するには、 Attachment オブジェクトを作成し、 プロパティを name
設定し、 プロパティをメディア ファイルの URL に設定 contentUrl
し、 プロパティを contentType
適切なメディアの種類 ( image/jpg、 audio/wav、 video/mp4 など) に設定します。 次に、メッセージを表す Activity オブジェクト内で、Attachment
オブジェクトを attachments
配列内に指定します。
次の例に、テキストと 1 つの画像添付ファイルを含むメッセージを送信する要求を示します。 この要求の例で、https://smba.trafficmanager.net/teams
はベース URI を示しています。ご利用のボットによって発行される要求に対するベース URI は、これとは異なる場合があります。 ベース URI の設定の詳細については、API リファレンスに関する記事をご覧ください。
POST https://smba.trafficmanager.net/teams/v3/conversations/abcd1234/activities/5d5cdc723
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
"type": "message",
"from": {
"id": "12345678",
"name": "sender's name"
},
"conversation": {
"id": "abcd1234",
"name": "conversation's name"
},
"recipient": {
"id": "1234abcd",
"name": "recipient's name"
},
"text": "Here's a picture of the duck I was telling you about.",
"attachments": [
{
"contentType": "image/jpg",
"contentUrl": "https://www.publicdomainpictures.net/pictures/30000/t2/duck-on-a-rock.jpg",
"name": "duck-on-a-rock.jpg"
}
],
"replyToId": "5d5cdc723"
}
イメージのインライン バイナリをサポートするチャネルの場合は、 の プロパティを contentUrl
イメージの Attachment
base64 バイナリ ( data:image/jpg など) に設定できます。base64,iVBORw0KGgo...).チャネルには、メッセージのテキスト文字列の横に画像または画像の URL が表示されます。
{
"type": "message",
"from": {
"id": "12345678",
"name": "sender's name"
},
"conversation": {
"id": "abcd1234",
"name": "conversation's name"
},
"recipient": {
"id": "1234abcd",
"name": "recipient's name"
},
"text": "Here's a picture of the duck I was telling you about.",
"attachments": [
{
"contentType": "image/jpg",
"contentUrl": "data:image/jpg;base64,iVBORw0KGgo...",
"name": "duck-on-a-rock.jpg"
}
],
"replyToId": "5d5cdc723"
}
上記の画像ファイル用の手順と同じ手順を使用して、動画ファイルまたはオーディオ ファイルをメッセージに添付することができます。 チャネルによっては、動画やオーディオがインラインで再生されたり、リンクとして表示されたりすることがあります。
Note
ボットがメディア添付ファイルを含むメッセージを受け取ることもあります。 たとえば、分析する写真や保存するドキュメントをユーザーがアップロードすることがチャネルによって許可されている場合、ボットが受け取るメッセージに添付ファイルが含まれる場合があります。
AudioCard 添付ファイルの追加
AudioCard または VideoCard 添付ファイルを追加する方法は、メディア添付ファイルを追加する方法と同じです。 たとえば、次の JSON は、メディア添付ファイルにオーディオ カードを追加する方法を示しています。
{
"type": "message",
"from": {
"id": "12345678",
"name": "sender's name"
},
"conversation": {
"id": "abcd1234",
"name": "conversation's name"
},
"recipient": {
"id": "1234abcd",
"name": "recipient's name"
},
"attachments": [
{
"contentType": "application/vnd.microsoft.card.audio",
"content": {
"title": "Allegro in C Major",
"subtitle": "Allegro Duet",
"text": "No Image, No Buttons, Autoloop, Autostart, Sharable",
"duration": "PT2M55S",
"media": [
{
"url": "https://contoso.com/media/AllegrofromDuetinCMajor.mp3"
}
],
"shareable": true,
"autoloop": true,
"autostart": true,
"value": {
// Supplementary parameter for this card
}
}
}],
"replyToId": "5d5cdc723"
}
チャネルがこの添付ファイルを受け取ると、オーディオ ファイルの再生が開始されます。 たとえば、[ 一時停止] を選択してユーザーがオーディオを操作する場合、チャネルは次のような JSON を使用してボットにコールバックを送信します。
{
...
"type": "event",
"name": "media/pause",
"value": {
"url": // URL for media
"cardValue": {
// Supplementary parameter for this card
}
}
}
activity.name
フィールドにはメディア イベント名 media/pause が表示されます。 すべてのメディア イベント名の一覧については、次の表を参照してください。
Event | 説明 |
---|---|
media/next | クライアントが次のメディアまでスキップしました |
media/pause | クライアントがメディアの再生を一時停止しました |
media/play | クライアントがメディアの再生を開始しました |
media/previous | クライアントが前のメディアまでスキップしました |
media/resume | クライアントがメディアの再生を再開しました |
media/stop | クライアントがメディアの再生を停止しました |