注意: 添付IDは90日後に有効期限が切れます。添付IDの有効期限が切れた後は、新しい添付IDを取得するためにメディアを再アップロードする必要があります。
再利用可能な添付ファイルは90日後に期限が切れて再送信できなくなりますが、メッセージスレッドの添付ファイルは期限切れになることはなく、ユーザーがスレッドからメッセージを削除するまで表示されます。ユースケースによっては、以下に示すようにアップロードと送信の手順を組み合わせることで、このTTLの問題を回避できます。
添付ファイルアップロードAPIを使用してアセットをアップロードすれば、後からそれをメッセージで送信できます。これにより、よく使用するファイルを何度もアップロードする必要がなくなります。このAPIは、URLのアセットの保存とローカルファイルシステムのアセットの保存をサポートしています。
Send APIを使用して、添付ファイル付きのメッセージの送信と、後から使うための添付ファイルの保存を同時に行うこともできます。詳細については、以下の アップロードして送信のセクションをご覧ください。
添付ファイルをアップロードするには、type
にpayload
とmessage.attachment
を指定したPOST
リクエストを、/
Your-page-id
/message_attachments
エンドポイントに送信してください。複数のメッセージでアセットを使用するには、payload.is_reusable
をtrue
に設定してください。
読みやすいようにフォーマットしています。page_access_tokenなどの太字で斜体の値を実際の値に置き換えてください。
curl -X POST "https://graph.facebook.com/v21.0
/Your-page-id/message_attachments" \
-H "Content-Type: application/json" \
-d '{
"access_token":"Your_page_access_token",
"message":{
"attachment":{
"type":"image",
"payload":{
"url":"https://your-url.com/image.jpg",
"is_reusable": true
}
}
}
}'
読みやすいようにフォーマットしています。page_access_tokenなどの太字で斜体の値を実際の値に置き換えてください。
curl -X POST -H "Content-Type: application/json" -d '{
"message": {
"attachment": {
"type": "image"
}
},
"filedata": "@/path-to-your-file/image.jpg",
"type": "image/png"
}' "https://graph.facebook.com/v21.0
/{PAGE_ID}/message_attachments?access_token={PAGE_ACCESS_TOKEN}"
成功すると、メッセージで使用する添付ファイルのIDに設定されたattachment_id
のJSONオブジェクトがアプリに送信されます。
{"attachment_id": "Your-attachment-ID"}
過去にアップロードしたアセット(message.attachment.payload.is_reusable
をtrue
に設定してアップロードされたもの)を付けてメッセージを送信するには、POST
リクエストをrecipient.id
を指定して/
Your-page-id
/messages
に、type
とpayload.attachment_id
を指定したmessage.attachment
オブジェクトとともに送信してください。
読みやすいようにフォーマットしています。page_access_tokenなどの太字で斜体の値を実際の値に置き換えてください。
curl -X POST -H "Content-Type: application/json" -d '{
"recipient": {
"id": "{PSID}"
},
"message": {
"attachment": {
"type": "image",
"payload": {
"attachment_id": "Your-attachment-ID"
}
}
}
}' "https://graph.facebook.com/v21.0
/{PAGE_ID}/messages?access_token={PAGE_ACCESS_TOKEN}"
成功すると、アプリはsuccess
がtrue
に設定されたJSONオブジェクトを受け取ります。
{"success": "true"}
1回のAPIリクエストで、メディアのアップロードと送信が可能です。
注意:この場合、ペイロードでis_public=true
を設定しないでください。ユーザーのメッセージスレッドの添付ファイルは常に非公開です。
読みやすいようにフォーマットしています。page_access_tokenなどの太字で斜体の値を実際の値に置き換えてください。
curl -X POST -H "Content-Type: application/json" -d '{
"recipient": {
"id": "{PSID}"
},
"message": {
"attachment": {
"type": "image",
"payload": {
"url": "https://your-url.com/image.jpg"
}
}
}
}' "https://graph.facebook.com/v21.0
/{PAGE_ID}/messages?access_token={PAGE_ACCESS_TOKEN}"
成功すると、アプリはsuccess
がtrue
に設定されたJSONオブジェクトを受け取ります。
{"success": "true"}
URLから添付する場合は、リクエスト本文に次のプロパティをJSONオブジェクトとして指定します。ファイルからの添付の場合は、プロパティをフォームデータとして送信します。
message
Property | Type | Description |
---|---|---|
| Object | An object describing attachments to the message. |
message.attachment
プロパティ | 型 | 説明 |
---|---|---|
| 文字列 | 添付ファイルの種類。次のいずれかである必要があります。
|
| オブジェクト | 添付ファイルを説明する |
message.attachment.payload
プロパティ | 型 | 説明 |
---|---|---|
| 文字列 | 任意。アップロードするファイルのURL。最大ファイルサイズ: 画像は8 MB、その他のファイルタイプは25 MB (エンコーディング後)。タイムアウト: 動画は75秒、その他のファイルタイプは10秒。 |
| ブーリアン | オプション。デフォルトはfalseです。1回のAPI呼び出しでアップロードして送信する場合は、 アップロードと送信を別々の手順で実行する場合にのみtrueに設定します。添付IDは90日後に有効期限切れになります。90日後に新しい添付IDを取得するには、メディアを再アップロードしてください。 再利用可能な添付ファイルは90日後に期限が切れて再送信できなくなりますが、メッセージスレッドの添付ファイルは期限切れになることはなく、ユーザーがスレッドからメッセージを削除するまで表示されます。 |
エラーコード | サブコード | メッセージ |
---|---|---|
100 | 2018074 | 無効なIDの可能性、または添付ファイルの所有権がない。 |
100 | 2018008 | URLからファイルのフェッチに失敗。URLが有効であること、有効なSSL証明書があること、有効なファイルサイズであること、タイムアウトを避けるためにサーバーが十分な速さで応答していることを確認してください。 |
100 | 2018294 | 動画のアップロードがタイムアウトしたか、動画が壊れています。動画を75秒以内にフェッチできない場合は、タイムアウトになりますのでご注意ください |
100 | 2018047 | 添付ファイルのアップロードの失敗。このエラーのよくある原因は、提供されたメディアタイプがURLで指定されたファイルタイプと一致しないことです。 |