Skip to content

Commit 1c94038

Browse files
authored
Adding RCS examples (#107)
1 parent 977d149 commit 1c94038

16 files changed

+563
-0
lines changed

.env-example

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ WHATSAPP_TEMPLATE_NAME=
3030
WHATSAPP_AUTH_TEMPLATE_NAME=
3131
WHATSAPP_TEMPLATE_REPLACEMENT_TEXT=
3232

33+
## For RCS messaging
34+
RCS_SENDER_ID=
35+
3336
## For media messaging (WhatsApp, Messenger, Viber)
3437
IMAGE_URL=
3538
IMAGE_CAPTION=
@@ -38,6 +41,11 @@ FILE_CAPTION=
3841
AUDIO_URL=
3942
VIDEO_URL=
4043

44+
## For Update Action
45+
46+
MESSAGE_UUID=
47+
GEOSPECIFIC_VONAGE_API_HOST=
48+
4149
# Vonage Number Insight variables
4250
INSIGHT_NUMBER=
4351

messages/rcs/revoke-message.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
require 'dotenv/load'
2+
require 'vonage'
3+
4+
VONAGE_APPLICATION_ID = ENV['VONAGE_APPLICATION_ID']
5+
VONAGE_APPLICATION_PRIVATE_KEY_PATH = ENV['VONAGE_APPLICATION_PRIVATE_KEY_PATH']
6+
GEOSPECIFIC_VONAGE_API_HOST = ENV['GEOSPECIFIC_VONAGE_API_HOST']
7+
MESSAGE_UUID = ENV['MESSAGE_UUID']
8+
9+
client = Vonage::Client.new(
10+
application_id: VONAGE_APPLICATION_ID,
11+
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH),
12+
api_host: GEOSPECIFIC_VONAGE_API_HOST
13+
)
14+
15+
client.messaging.update(
16+
message_uuid: MESSAGE_UUID,
17+
status: 'revoked'
18+
)

messages/rcs/send-file.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
require 'dotenv/load'
2+
require 'vonage'
3+
4+
VONAGE_APPLICATION_ID = ENV['VONAGE_APPLICATION_ID']
5+
VONAGE_APPLICATION_PRIVATE_KEY_PATH = ENV['VONAGE_APPLICATION_PRIVATE_KEY_PATH']
6+
RCS_SENDER_ID = ENV['RCS_SENDER_ID']
7+
TO_NUMBER = ENV['TO_NUMBER']
8+
FILE_URL = ENV['FILE_URL']
9+
10+
client = Vonage::Client.new(
11+
application_id: VONAGE_APPLICATION_ID,
12+
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH)
13+
)
14+
15+
message = client.messaging.rcs(
16+
type: 'file',
17+
message: {
18+
url: ENV['FILE_URL'],
19+
}
20+
)
21+
22+
client.messaging.send(
23+
from: RCS_SENDER_ID,
24+
to: TO_NUMBER,
25+
**message
26+
)

messages/rcs/send-image.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
require 'dotenv/load'
2+
require 'vonage'
3+
4+
VONAGE_APPLICATION_ID = ENV['VONAGE_APPLICATION_ID']
5+
VONAGE_APPLICATION_PRIVATE_KEY_PATH = ENV['VONAGE_APPLICATION_PRIVATE_KEY_PATH']
6+
RCS_SENDER_ID = ENV['RCS_SENDER_ID']
7+
TO_NUMBER = ENV['TO_NUMBER']
8+
IMAGE_URL = ENV['IMAGE_URL']
9+
10+
client = Vonage::Client.new(
11+
application_id: VONAGE_APPLICATION_ID,
12+
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH)
13+
)
14+
15+
message = client.messaging.rcs(
16+
type: 'image',
17+
message: {
18+
url: ENV['IMAGE_URL'],
19+
}
20+
)
21+
22+
client.messaging.send(
23+
from: RCS_SENDER_ID,
24+
to: TO_NUMBER,
25+
**message
26+
)
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
require 'dotenv/load'
2+
require 'vonage'
3+
4+
VONAGE_APPLICATION_ID = ENV['VONAGE_APPLICATION_ID']
5+
VONAGE_APPLICATION_PRIVATE_KEY_PATH = ENV['VONAGE_APPLICATION_PRIVATE_KEY_PATH']
6+
RCS_SENDER_ID = ENV['RCS_SENDER_ID']
7+
TO_NUMBER = ENV['TO_NUMBER']
8+
IMAGE_URL = ENV['IMAGE_URL']
9+
VIDEO_URL = ENV['VIDEO_URL']
10+
11+
client = Vonage::Client.new(
12+
application_id: VONAGE_APPLICATION_ID,
13+
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH)
14+
)
15+
16+
message = client.messaging.rcs(
17+
type: 'custom',
18+
message: {
19+
contentMessage: {
20+
richCard: {
21+
carouselCard: {
22+
cardWidth: "MEDIUM",
23+
cardContents: [
24+
{
25+
title: "Option 1: Photo",
26+
description: "Do you prefer this photo?",
27+
media: {
28+
height: "MEDIUM",
29+
contentInfo: {
30+
fileUrl: ENV['IMAGE_URL'],
31+
forceRefresh: false
32+
}
33+
},
34+
suggestions: [
35+
{
36+
reply: {
37+
text: "Option 1",
38+
postbackData: "card_1"
39+
}
40+
}
41+
]
42+
},
43+
{
44+
title: "Option 1: Video",
45+
description: "Or this video?",
46+
media: {
47+
height: "MEDIUM",
48+
contentInfo: {
49+
fileUrl: ENV['VIDEO_URL'],
50+
forceRefresh: false
51+
}
52+
},
53+
suggestions: [
54+
{
55+
reply: {
56+
text: "Option 2",
57+
postbackData: "card_2"
58+
}
59+
}
60+
]
61+
}
62+
]
63+
}
64+
}
65+
}
66+
}
67+
)
68+
69+
client.messaging.send(
70+
from: RCS_SENDER_ID,
71+
to: TO_NUMBER,
72+
**message
73+
)
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
require 'dotenv/load'
2+
require 'vonage'
3+
4+
VONAGE_APPLICATION_ID = ENV['VONAGE_APPLICATION_ID']
5+
VONAGE_APPLICATION_PRIVATE_KEY_PATH = ENV['VONAGE_APPLICATION_PRIVATE_KEY_PATH']
6+
RCS_SENDER_ID = ENV['RCS_SENDER_ID']
7+
TO_NUMBER = ENV['TO_NUMBER']
8+
IMAGE_URL = ENV['IMAGE_URL']
9+
10+
client = Vonage::Client.new(
11+
application_id: VONAGE_APPLICATION_ID,
12+
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH)
13+
)
14+
15+
message = client.messaging.rcs(
16+
type: 'custom',
17+
message: {
18+
contentMessage: {
19+
richCard: {
20+
standaloneCard: {
21+
thumbnailImageAlignment: "RIGHT",
22+
cardOrientation: "VERTICAL",
23+
cardContent: {
24+
title: "Quick question",
25+
description: "Do you like this picture?",
26+
media: {
27+
height: "TALL",
28+
contentInfo: {
29+
fileUrl: ENV['IMAGE_URL'],
30+
forceRefresh: false
31+
}
32+
},
33+
suggestions: [
34+
{
35+
reply: {
36+
text: "Yes",
37+
postbackData: "suggestion_1"
38+
}
39+
},
40+
{
41+
reply: {
42+
text: "I love it!",
43+
postbackData: "suggestion_2"
44+
}
45+
}
46+
]
47+
}
48+
}
49+
}
50+
}
51+
}
52+
)
53+
54+
client.messaging.send(
55+
from: RCS_SENDER_ID,
56+
to: TO_NUMBER,
57+
**message
58+
)
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
require 'dotenv/load'
2+
require 'vonage'
3+
4+
VONAGE_APPLICATION_ID = ENV['VONAGE_APPLICATION_ID']
5+
VONAGE_APPLICATION_PRIVATE_KEY_PATH = ENV['VONAGE_APPLICATION_PRIVATE_KEY_PATH']
6+
RCS_SENDER_ID = ENV['RCS_SENDER_ID']
7+
TO_NUMBER = ENV['TO_NUMBER']
8+
9+
client = Vonage::Client.new(
10+
application_id: VONAGE_APPLICATION_ID,
11+
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH)
12+
)
13+
14+
message = client.messaging.rcs(
15+
type: 'custom',
16+
message: {
17+
contentMessage: {
18+
text: "Product Launch: Save the date!",
19+
suggestions: [
20+
{
21+
action: {
22+
text: "Save to calendar",
23+
postbackData: "postback_data_1234",
24+
fallbackUrl: "https://www.google.com/calendar",
25+
createCalendarEventAction: {
26+
startTime: "2024-08-24T20:00:00Z",
27+
endTime: "2024-08-24T22:00:00Z",
28+
title: "Vonage API Product Launch",
29+
description: "Join us for the launch of our latest product!",
30+
}
31+
}
32+
}
33+
]
34+
}
35+
}
36+
)
37+
38+
client.messaging.send(
39+
from: RCS_SENDER_ID,
40+
to: TO_NUMBER,
41+
**message
42+
)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
require 'dotenv/load'
2+
require 'vonage'
3+
4+
VONAGE_APPLICATION_ID = ENV['VONAGE_APPLICATION_ID']
5+
VONAGE_APPLICATION_PRIVATE_KEY_PATH = ENV['VONAGE_APPLICATION_PRIVATE_KEY_PATH']
6+
RCS_SENDER_ID = ENV['RCS_SENDER_ID']
7+
TO_NUMBER = ENV['TO_NUMBER']
8+
9+
client = Vonage::Client.new(
10+
application_id: VONAGE_APPLICATION_ID,
11+
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH)
12+
)
13+
14+
message = client.messaging.rcs(
15+
type: 'custom',
16+
message: {
17+
contentMessage: {
18+
text: "Call us to claim your free gift!",
19+
suggestions: [
20+
{
21+
action: {
22+
text: "Call now!",
23+
postbackData: "postback_data_1234",
24+
fallbackUrl: "https://www.example.com/contact/",
25+
dialAction: {
26+
phoneNumber: "+447900000000"
27+
}
28+
}
29+
}
30+
]
31+
}
32+
}
33+
)
34+
35+
client.messaging.send(
36+
from: RCS_SENDER_ID,
37+
to: TO_NUMBER,
38+
**message
39+
)
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
require 'dotenv/load'
2+
require 'vonage'
3+
4+
VONAGE_APPLICATION_ID = ENV['VONAGE_APPLICATION_ID']
5+
VONAGE_APPLICATION_PRIVATE_KEY_PATH = ENV['VONAGE_APPLICATION_PRIVATE_KEY_PATH']
6+
RCS_SENDER_ID = ENV['RCS_SENDER_ID']
7+
TO_NUMBER = ENV['TO_NUMBER']
8+
9+
client = Vonage::Client.new(
10+
application_id: VONAGE_APPLICATION_ID,
11+
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH)
12+
)
13+
14+
message = client.messaging.rcs(
15+
type: 'custom',
16+
message: {
17+
contentMessage: {
18+
text: "Need some help? Call us now or visit our website for more information.",
19+
suggestions: [
20+
{
21+
action: {
22+
text: "Call us",
23+
postbackData: "postback_data_1234",
24+
fallbackUrl: "https://www.example.com/contact/",
25+
dialAction: {
26+
phoneNumber: "+447900000000"
27+
}
28+
}
29+
},
30+
{
31+
action: {
32+
text: "Visit site",
33+
postbackData: "postback_data_1234",
34+
openUrlAction: {
35+
url: "http://example.com/"
36+
}
37+
}
38+
}
39+
]
40+
}
41+
}
42+
)
43+
44+
client.messaging.send(
45+
from: RCS_SENDER_ID,
46+
to: TO_NUMBER,
47+
**message
48+
)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
require 'dotenv/load'
2+
require 'vonage'
3+
4+
VONAGE_APPLICATION_ID = ENV['VONAGE_APPLICATION_ID']
5+
VONAGE_APPLICATION_PRIVATE_KEY_PATH = ENV['VONAGE_APPLICATION_PRIVATE_KEY_PATH']
6+
RCS_SENDER_ID = ENV['RCS_SENDER_ID']
7+
TO_NUMBER = ENV['TO_NUMBER']
8+
9+
client = Vonage::Client.new(
10+
application_id: VONAGE_APPLICATION_ID,
11+
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH)
12+
)
13+
14+
message = client.messaging.rcs(
15+
type: 'custom',
16+
message: {
17+
contentMessage: {
18+
text: "Check out our latest offers!",
19+
suggestions: [
20+
{
21+
action: {
22+
text: "Open product page",
23+
postbackData: "postback_data_1234",
24+
openUrlAction: {
25+
url: "http://example.com/"
26+
}
27+
}
28+
}
29+
]
30+
}
31+
}
32+
)
33+
34+
client.messaging.send(
35+
from: RCS_SENDER_ID,
36+
to: TO_NUMBER,
37+
**message
38+
)

0 commit comments

Comments
 (0)