这份文档还在翻译中,预期年底前完成。欢迎您提供宝贵的意见及建议。
Send a Message Template
In this code snippet you learn how to send a Facebook message template using a custom object with the Messages API.
Example
Ensure the following variables are set to your required values using any convenient method:
Key | Description |
---|---|
BASE_URL |
For production use the base URL is https://api.nexmo.com/ . For sandbox testing the base URL is https://messages-sandbox.nexmo.com/ . |
MESSAGES_API_URL |
For production use the Messages API endpoint is https://api.nexmo.com/v0.1/messages . For sandbox testing the Messages API endpoint is https://messages-sandbox.nexmo.com/v0.1/messages . |
FB_SENDER_ID |
Your Page ID. The FB_SENDER_ID is the same as the to.id value you received in the inbound messenger event on your Inbound Message Webhook URL. For sandbox testing this is 107083064136738 . |
FB_RECIPIENT_ID |
The PSID of the user you want to reply to. The FB_RECIPIENT_ID is the PSID of the Facebook User you are messaging. This value is the from.id value you received in the inbound messenger event on your Inbound Message Webhook URL. |
LOGO_IMAGE_URL |
An optional logo image. |
HEADER_IMAGE_URL |
An optional header image. |
ABOVE_BAR_CODE_IMAGE_URL |
An optional image for above the bar code. |
Prerequisites
If you do not have an application you can create one. Make sure you also configure your webhooks.
Write the code
Add the following to send-template.sh
:
curl -X POST $MESSAGES_API_URL \
-H 'Authorization: Bearer '$JWT \
-H 'Content-Type: application/json' \
-d $'{
"from": {
"type": "messenger",
"id": "$FB_SENDER_ID"
},
"to": {
"type": "messenger",
"id": "$FB_RECIPIENT_ID"
},
"message": {
"content": {
"type": "custom",
"custom": {
"attachment": {
"type": "template",
"payload": {
"template_type": "airline_boardingpass",
"intro_message": "You are checked in.",
"locale": "en_US",
"boarding_pass": [
{
"passenger_name": "OTHER/A",
"pnr_number": "CG4X7U",
"seat": "1A",
"logo_image_url": "$LOGO_IMAGE_URL",
"header_image_url": "$HEADER_IMAGE_URL",
"qr_code": "M1OTHER/A CG4X7U nawouehgawgnapwi3jfa0wfh",
"above_bar_code_image_url": "$ABOVE_BAR_CODE_IMAGE_URL",
"auxiliary_fields": [
{
"label": "Terminal",
"value": "T1"
},
{
"label": "Departure",
"value": "30OCT 19:05"
}
],
"secondary_fields": [
{
"label": "Boarding",
"value": "18:30"
},
{
"label": "Gate",
"value": "D57"
},
{
"label": "Seat",
"value": "74J"
},
{
"label": "Sec.Nr.",
"value": "003"
}
],
"flight_info": {
"flight_number": "KL0642",
"departure_airport": {
"airport_code": "SFO",
"city": "San Francisco",
"terminal": "T1",
"gate": "D57"
},
"arrival_airport": {
"airport_code": "LHR",
"city": "London"
},
"flight_schedule": {
"departure_time": "2018-03-02T19:05",
"arrival_time": "2018-03-05T17:30"
}
}
}
]
}
}
}
}
}
}'
Run your code
Save this file to your machine and run it:
bash send-template.sh
Prerequisites
If you do not have an application you can create one. Make sure you also configure your webhooks.
npm install @vonage/server-sdk@beta
Write the code
Add the following to send-template.js
:
const Vonage = require('@vonage/server-sdk');
const vonage = new Vonage(
{
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET,
applicationId: VONAGE_APPLICATION_ID,
privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
},
{
apiHost: BASE_URL,
}
);
vonage.channel.send(
{ type: 'messenger', id: FB_RECIPIENT_ID },
{ type: 'messenger', id: FB_SENDER_ID },
{
content: {
type: 'custom',
custom: {
attachment: {
type: 'template',
payload: {
template_type: 'airline_boardingpass',
intro_message: 'You are checked in.',
locale: 'en_US',
boarding_pass: [
{
passenger_name: 'OTHER/A',
pnr_number: 'CG4X7U',
seat: '1A',
logo_image_url: LOGO_IMAGE_URL,
header_image_url: HEADER_IMAGE_URL,
qr_code: 'M1OTHER/A CG4X7U nawouehgawgnapwi3jfa0wfh',
above_bar_code_image_url: ABOVE_BAR_CODE_IMAGE_URL,
auxiliary_fields: [
{
label: 'Terminal',
value: 'T1',
},
{
label: 'Departure',
value: '30OCT 19:05',
},
],
secondary_fields: [
{
label: 'Boarding',
value: '18:30',
},
{
label: 'Gate',
value: 'D57',
},
{
label: 'Seat',
value: '74J',
},
{
label: 'Sec.Nr.',
value: '003',
},
],
flight_info: {
flight_number: 'KL0642',
departure_airport: {
airport_code: 'SFO',
city: 'San Francisco',
terminal: 'T1',
gate: 'D57',
},
arrival_airport: {
airport_code: 'LHR',
city: 'London',
},
flight_schedule: {
departure_time: '2018-03-02T19:05',
arrival_time: '2018-03-05T17:30',
},
},
},
],
},
},
},
},
},
(err, data) => {
if (err) {
console.error(err);
} else {
console.log(data.message_uuid);
}
}
);
Run your code
Save this file to your machine and run it:
node send-template.js
Try it out
When you run the code a Facebook message template is sent to the recipient. In this example the message is an airline boarding pass.