Skip to content

Commit 0131e8c

Browse files
author
Mark Lewin
authored
Merge pull request #87 from Nexmo/markl-messages-dispatch-snippets
Add Node Messages API snippets
2 parents 4b3ec7c + 0f72bfa commit 0131e8c

20 files changed

+1144
-86
lines changed

.env-example

+18-1
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ NEXMO_APPLICATION_PRIVATE_KEY_PATH=
1111
NEXMO_APPLICATION_ID=
1212
SERVER_BASE_URL=https://example.com
1313
SMS_CALLBACK_URL=
14+
TO_NUMBER=
1415

1516
# Applications
1617
APPLICATION_NAME=
1718

1819
# Voice
1920
CONF_NAME=
2021
UUID=
21-
TO_NUMBER=
2222
RECIPIENT_NUMBER=
2323

2424
# Conversation
@@ -56,3 +56,20 @@ MESSAGES_APPLICATION_ID=12a3b4cd-a1b2-1ab2-a1b2-a1234bc5d678
5656
VOICE_CALLBACK_TYPE=tel
5757
VOICE_CALLBACK_VALUE=447700900002
5858
VOICE_STATUS_URL=https://example.com/webhooks/status
59+
60+
# Messages
61+
BASE_URL=messages-sandbox.nexmo.com
62+
FB_SENDER_ID=
63+
FB_RECIPIENT_ID=
64+
VIBER_SERVICE_MESSAGE_ID=
65+
WHATSAPP_NUMBER=
66+
WHATSAPP_TEMPLATE_NAMESPACE=
67+
WHATSAPP_TEMPLATE_NAME=
68+
IMAGE_URL=
69+
VIDEO_URL=
70+
AUDIO_URL=
71+
FILE_URL=
72+
FILE_CAPTION=
73+
LOGO_IMAGE_URL=
74+
HEADER_IMAGE_URL=
75+
ABOVE_BAR_CODE_IMAGE_URL=

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ npm-debug.log
88
*.key
99
.c9
1010
private.key
11+
.nexmo-app

messages/messenger/send-audio.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
require('dotenv').config({ path: __dirname + '/../../.env' });
2+
3+
const NEXMO_API_KEY = process.env.NEXMO_API_KEY;
4+
const NEXMO_API_SECRET = process.env.NEXMO_API_SECRET;
5+
const NEXMO_APPLICATION_ID = process.env.NEXMO_APPLICATION_ID;
6+
const NEXMO_APPLICATION_PRIVATE_KEY_PATH =
7+
__dirname + '/../../' + process.env.NEXMO_APPLICATION_PRIVATE_KEY_PATH;
8+
9+
const FB_RECIPIENT_ID = process.env.FB_RECIPIENT_ID;
10+
const FB_SENDER_ID = process.env.FB_SENDER_ID;
11+
const BASE_URL = process.env.BASE_URL;
12+
const AUDIO_URL = process.env.AUDIO_URL;
13+
14+
const Nexmo = require('nexmo');
15+
16+
const nexmo = new Nexmo(
17+
{
18+
apiKey: NEXMO_API_KEY,
19+
apiSecret: NEXMO_API_SECRET,
20+
applicationId: NEXMO_APPLICATION_ID,
21+
privateKey: NEXMO_APPLICATION_PRIVATE_KEY_PATH,
22+
},
23+
{
24+
apiHost: BASE_URL,
25+
}
26+
);
27+
28+
nexmo.channel.send(
29+
{ type: 'messenger', id: FB_RECIPIENT_ID },
30+
{ type: 'messenger', id: FB_SENDER_ID },
31+
{
32+
content: {
33+
type: 'audio',
34+
audio: {
35+
url: AUDIO_URL,
36+
},
37+
},
38+
},
39+
(err, data) => {
40+
if (err) {
41+
console.error(err);
42+
} else {
43+
console.log(data.message_uuid);
44+
}
45+
}
46+
);

messages/messenger/send-file.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
require('dotenv').config({ path: __dirname + '/../../.env' });
2+
3+
const NEXMO_API_KEY = process.env.NEXMO_API_KEY;
4+
const NEXMO_API_SECRET = process.env.NEXMO_API_SECRET;
5+
const NEXMO_APPLICATION_ID = process.env.NEXMO_APPLICATION_ID;
6+
const NEXMO_APPLICATION_PRIVATE_KEY_PATH =
7+
__dirname + '/../../' + process.env.NEXMO_APPLICATION_PRIVATE_KEY_PATH;
8+
9+
const FB_RECIPIENT_ID = process.env.FB_RECIPIENT_ID;
10+
const FB_SENDER_ID = process.env.FB_SENDER_ID;
11+
const BASE_URL = process.env.BASE_URL;
12+
const FILE_URL = process.env.FILE_URL;
13+
14+
const Nexmo = require('nexmo');
15+
16+
const nexmo = new Nexmo(
17+
{
18+
apiKey: NEXMO_API_KEY,
19+
apiSecret: NEXMO_API_SECRET,
20+
applicationId: NEXMO_APPLICATION_ID,
21+
privateKey: NEXMO_APPLICATION_PRIVATE_KEY_PATH,
22+
},
23+
{
24+
apiHost: BASE_URL,
25+
}
26+
);
27+
28+
nexmo.channel.send(
29+
{ type: 'messenger', id: FB_RECIPIENT_ID },
30+
{ type: 'messenger', id: FB_SENDER_ID },
31+
{
32+
content: {
33+
type: 'file',
34+
file: {
35+
url: FILE_URL,
36+
},
37+
},
38+
},
39+
(err, data) => {
40+
if (err) {
41+
console.error(err);
42+
} else {
43+
console.log(data.message_uuid);
44+
}
45+
}
46+
);

messages/messenger/send-image.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
require('dotenv').config({ path: __dirname + '/../../.env' });
2+
3+
const NEXMO_API_KEY = process.env.NEXMO_API_KEY;
4+
const NEXMO_API_SECRET = process.env.NEXMO_API_SECRET;
5+
const NEXMO_APPLICATION_ID = process.env.NEXMO_APPLICATION_ID;
6+
const NEXMO_APPLICATION_PRIVATE_KEY_PATH =
7+
__dirname + '/../../' + process.env.NEXMO_APPLICATION_PRIVATE_KEY_PATH;
8+
9+
const FB_RECIPIENT_ID = process.env.FB_RECIPIENT_ID;
10+
const FB_SENDER_ID = process.env.FB_SENDER_ID;
11+
const BASE_URL = process.env.BASE_URL;
12+
const IMAGE_URL = process.env.IMAGE_URL;
13+
14+
const Nexmo = require('nexmo');
15+
16+
const nexmo = new Nexmo(
17+
{
18+
apiKey: NEXMO_API_KEY,
19+
apiSecret: NEXMO_API_SECRET,
20+
applicationId: NEXMO_APPLICATION_ID,
21+
privateKey: NEXMO_APPLICATION_PRIVATE_KEY_PATH,
22+
},
23+
{
24+
apiHost: BASE_URL,
25+
}
26+
);
27+
28+
nexmo.channel.send(
29+
{ type: 'messenger', id: FB_RECIPIENT_ID },
30+
{ type: 'messenger', id: FB_SENDER_ID },
31+
{
32+
content: {
33+
type: 'image',
34+
image: {
35+
url: IMAGE_URL,
36+
},
37+
},
38+
},
39+
(err, data) => {
40+
if (err) {
41+
console.error(err);
42+
} else {
43+
console.log(data.message_uuid);
44+
}
45+
}
46+
);

messages/messenger/send-template.js

+111
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
require('dotenv').config({ path: __dirname + '/../../.env' });
2+
3+
const NEXMO_API_KEY = process.env.NEXMO_API_KEY;
4+
const NEXMO_API_SECRET = process.env.NEXMO_API_SECRET;
5+
const NEXMO_APPLICATION_ID = process.env.NEXMO_APPLICATION_ID;
6+
const NEXMO_APPLICATION_PRIVATE_KEY_PATH =
7+
__dirname + '/../../' + process.env.NEXMO_APPLICATION_PRIVATE_KEY_PATH;
8+
9+
const FB_RECIPIENT_ID = process.env.FB_RECIPIENT_ID;
10+
const FB_SENDER_ID = process.env.FB_SENDER_ID;
11+
const BASE_URL = process.env.BASE_URL;
12+
const LOGO_IMAGE_URL = process.env.LOGO_IMAGE_URL;
13+
const HEADER_IMAGE_URL = process.env.HEADER_IMAGE_URL;
14+
const ABOVE_BAR_CODE_IMAGE_URL = process.env.ABOVE_BAR_CODE_IMAGE_URL;
15+
16+
const Nexmo = require('nexmo');
17+
18+
const nexmo = new Nexmo(
19+
{
20+
apiKey: NEXMO_API_KEY,
21+
apiSecret: NEXMO_API_SECRET,
22+
applicationId: NEXMO_APPLICATION_ID,
23+
privateKey: NEXMO_APPLICATION_PRIVATE_KEY_PATH,
24+
},
25+
{
26+
apiHost: BASE_URL,
27+
}
28+
);
29+
30+
nexmo.channel.send(
31+
{ type: 'messenger', id: FB_RECIPIENT_ID },
32+
{ type: 'messenger', id: FB_SENDER_ID },
33+
{
34+
content: {
35+
type: 'custom',
36+
custom: {
37+
attachment: {
38+
type: 'template',
39+
payload: {
40+
template_type: 'airline_boardingpass',
41+
intro_message: 'You are checked in.',
42+
locale: 'en_US',
43+
boarding_pass: [
44+
{
45+
passenger_name: 'OTHER/A',
46+
pnr_number: 'CG4X7U',
47+
seat: '1A',
48+
logo_image_url: LOGO_IMAGE_URL,
49+
header_image_url: HEADER_IMAGE_URL,
50+
qr_code: 'M1OTHER/A CG4X7U nawouehgawgnapwi3jfa0wfh',
51+
above_bar_code_image_url: ABOVE_BAR_CODE_IMAGE_URL,
52+
auxiliary_fields: [
53+
{
54+
label: 'Terminal',
55+
value: 'T1',
56+
},
57+
{
58+
label: 'Departure',
59+
value: '30OCT 19:05',
60+
},
61+
],
62+
secondary_fields: [
63+
{
64+
label: 'Boarding',
65+
value: '18:30',
66+
},
67+
{
68+
label: 'Gate',
69+
value: 'D57',
70+
},
71+
{
72+
label: 'Seat',
73+
value: '74J',
74+
},
75+
{
76+
label: 'Sec.Nr.',
77+
value: '003',
78+
},
79+
],
80+
flight_info: {
81+
flight_number: 'KL0642',
82+
departure_airport: {
83+
airport_code: 'SFO',
84+
city: 'San Francisco',
85+
terminal: 'T1',
86+
gate: 'D57',
87+
},
88+
arrival_airport: {
89+
airport_code: 'LHR',
90+
city: 'London',
91+
},
92+
flight_schedule: {
93+
departure_time: '2018-03-02T19:05',
94+
arrival_time: '2018-03-05T17:30',
95+
},
96+
},
97+
},
98+
],
99+
},
100+
},
101+
},
102+
},
103+
},
104+
(err, data) => {
105+
if (err) {
106+
console.error(err);
107+
} else {
108+
console.log(data.message_uuid);
109+
}
110+
}
111+
);

messages/messenger/send-text.js

+37-32
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,44 @@
1-
require('dotenv').config({path: __dirname + '/../../.env'})
1+
require('dotenv').config({ path: __dirname + '/../../.env' });
22

3-
const NEXMO_API_KEY = process.env.NEXMO_API_KEY
4-
const NEXMO_API_SECRET = process.env.NEXMO_API_SECRET
5-
const NEXMO_APPLICATION_ID = process.env.NEXMO_APPLICATION_ID
6-
const NEXMO_APPLICATION_PRIVATE_KEY_PATH = __dirname +"/../../"+ process.env.NEXMO_APPLICATION_PRIVATE_KEY_PATH
3+
const NEXMO_API_KEY = process.env.NEXMO_API_KEY;
4+
const NEXMO_API_SECRET = process.env.NEXMO_API_SECRET;
5+
const NEXMO_APPLICATION_ID = process.env.NEXMO_APPLICATION_ID;
6+
const NEXMO_APPLICATION_PRIVATE_KEY_PATH =
7+
__dirname + '/../../' + process.env.NEXMO_APPLICATION_PRIVATE_KEY_PATH;
78

8-
const FB_RECIPIENT_ID = process.env.FB_RECIPIENT_ID
9-
const FB_SENDER_ID = process.env.FB_SENDER_ID
10-
const BASE_URL = process.env.BASE_URL
9+
const FB_RECIPIENT_ID = process.env.FB_RECIPIENT_ID;
10+
const FB_SENDER_ID = process.env.FB_SENDER_ID;
11+
const BASE_URL = process.env.BASE_URL;
1112

12-
const Nexmo = require('nexmo')
13+
const Nexmo = require('nexmo');
1314

14-
const nexmo = new Nexmo({
15-
apiKey: NEXMO_API_KEY,
16-
apiSecret: NEXMO_API_SECRET,
17-
applicationId: NEXMO_APPLICATION_ID,
18-
privateKey: NEXMO_APPLICATION_PRIVATE_KEY_PATH
19-
}, {
20-
apiHost: BASE_URL
21-
})
15+
const nexmo = new Nexmo(
16+
{
17+
apiKey: NEXMO_API_KEY,
18+
apiSecret: NEXMO_API_SECRET,
19+
applicationId: NEXMO_APPLICATION_ID,
20+
privateKey: NEXMO_APPLICATION_PRIVATE_KEY_PATH,
21+
},
22+
{
23+
apiHost: BASE_URL,
24+
}
25+
);
2226

2327
nexmo.channel.send(
24-
{ "type": "messenger", "id": FB_RECIPIENT_ID },
25-
{ "type": "messenger", "id": FB_SENDER_ID },
26-
{
27-
"content": {
28-
"type": "text",
29-
"text": "This is a Facebook Messenger text message sent using the Messages API"
30-
}
31-
},
32-
(err, data) => {
33-
if (err) {
34-
console.error(err);
35-
} else {
36-
console.log(data.message_uuid);
37-
}
38-
}
28+
{ type: 'messenger', id: FB_RECIPIENT_ID },
29+
{ type: 'messenger', id: FB_SENDER_ID },
30+
{
31+
content: {
32+
type: 'text',
33+
text:
34+
'This is a Facebook Messenger text message sent using the Messages API',
35+
},
36+
},
37+
(err, data) => {
38+
if (err) {
39+
console.error(err);
40+
} else {
41+
console.log(data.message_uuid);
42+
}
43+
}
3944
);

0 commit comments

Comments
 (0)