نمایندگان RCS برای کسب و کار با ارسال و دریافت پیام با کاربران ارتباط برقرار میکنند. برای ارسال پیام به کاربران، نماینده شما درخواستهای پیام را به API پیامرسانی تجاری RCS ارسال میکند. یک درخواست واحد میتواند شامل متن ، کارتهای غنی ، فایلهای رسانهای و PDF ، پاسخهای پیشنهادی و اقدامات پیشنهادی باشد.
پلتفرم RCS for Business در موقعیتهای خاص خطاها را برمیگرداند تا به شما در مدیریت ارسال پیام کمک کند:
- اگر به کاربری که دستگاهش از RCS پشتیبانی نمیکند یا RCS در آن فعال نیست، پیام ارسال کنید، پلتفرم RCS for Business خطای 404 NOT_FOUND را برمیگرداند. در این حالت، میتوانید از طریق روشهای جایگزین تعریفشده در زیرساخت خود، برای دسترسی به کاربر تلاش کنید.
- اگر پیامی را به یک کاربر RCS در شبکهای که هنوز عامل شما راهاندازی نشده است، یا در شبکهای که ترافیک RCS را فعال نکرده است، ارسال کنید، پلتفرم RCS برای کسبوکار خطای 404 NOT_FOUND را برمیگرداند.
- اگر پیامی با ویژگیهایی ارسال کنید که دستگاه کاربر از آنها پشتیبانی نمیکند، پلتفرم RCS for Business خطای ۴۰۰ INVALID_ARGUMENT را برمیگرداند و پیام شما را ارسال نمیکند.
به عنوان بخشی از استراتژی پیامرسانی چندکاناله خود، بهتر است پیامهایی را که پس از مدت زمان معقولی تحویل داده نمیشوند، لغو کنید و آنها را از طریق کانال دیگری ارسال کنید. برای لغو خودکار پیامها در یک زمان از پیش تعریفشده، یک تاریخ انقضا برای پیام تعیین کنید.
گیرنده آنلاین نیست.
پلتفرم RCS for Business در صورت آفلاین بودن گیرنده، همچنان پیام را برای تحویل میپذیرد. شما یک پاسخ 200 OK دریافت میکنید و پلتفرم RCS for Business پیام را نگه میدارد و به مدت 30 روز سعی در ارسال مجدد آن میکند. نیازی به درخواست از RCS for Business برای ارسال مجدد پیام نیست.
RCS for Business هرگونه پیام تحویل داده نشده را 30 روز پس از ارسال آنها حذف میکند.
بسته به مورد استفادهی نمایندهی شما، ممکن است بخواهید قبل از این مهلت ۳۰ روزه، یک پیام تحویل داده نشده را لغو کنید . لغو میتواند از دریافت پیام قدیمی توسط کاربران آفلاین هنگام آنلاین شدن مجدد جلوگیری کند. روشهای مختلفی برای لغو یک پیام وجود دارد:
- برای فعال کردن لغو ، یک درخواست لغو ارسال کنید .
- برای لغو خودکار پیام در زمان مناسب ، تاریخ انقضای پیام را تنظیم کنید .
تنظیم تاریخ انقضای پیام
آیا نماینده شما به زمان پیام حساس است؟ برای مثال، رمزهای یکبار مصرف (OTP) فقط برای مدت کوتاهی معتبر هستند. پیشنهادهای با زمان محدود منقضی میشوند. و یادآوریهای قرار ملاقات پس از تاریخ قرار ملاقات دیگر مرتبط نیستند. برای اینکه پیامها بهروز و مرتبط باشند، برای پیامها تاریخ انقضا تعیین کنید. این کار میتواند از دریافت محتوای قدیمی توسط کاربران آفلاین هنگام آنلاین شدن مجدد جلوگیری کند. تاریخ انقضا همچنین نشانه خوبی برای فراخوانی استراتژی پیامرسانی جایگزین شماست تا کاربران اطلاعات مورد نیاز خود را به موقع دریافت کنند.
برای تنظیم انقضای پیام، یکی از فیلدهای زیر را در پیام اپراتور مشخص کنید:
-
expireTime: زمان دقیق انقضای پیام به واحد زمانی UTC. -
ttl(زمان حیات): مدت زمان قبل از انقضای پیام.
برای گزینههای قالببندی و مقدار، به AgentMessage مراجعه کنید.
حداکثر مقدار برای ttl و expireTime ، ۱۵ روز پس از ارسال پیام است.
اگرچه حداقل مقداری برای ttl و expireTime وجود ندارد، اما توصیه میشود حداقل ۱۰ ثانیه پس از ارسال پیام، این کار را انجام دهید تا احتمال دریافت اعلان لغو و تحویل پیام به طور قابل توجهی کاهش یابد.
زمان حیات (TTL) برای یک پیام
وقتی برای یک پیام RCS for Business یک TTL تنظیم میکنید، مشخص میکنید که پیام تا چه مدت باید معتبر و قابل تحویل در نظر گرفته شود. اگر پیام در این دوره TTL با موفقیت به دستگاه کاربر تحویل داده نشود، پلتفرم RCS for Business به طور خودکار سعی در لغو آن میکند.
وقتی لغو پیام را آغاز میکنید، از پلتفرم RCS for Business درخواست میکنید که تلاش برای تحویل آن پیام خاص را متوقف کند. با این حال، این اقدام فقط بر تلاشهای تحویل آینده تأثیر میگذارد. اگر دستگاه کاربر قبلاً پیام را با موفقیت دریافت کرده باشد، پیام در حال پردازش است و پلتفرم RCS for Business نمیتواند پیام را از دستگاه کاربر لغو کند.
در مورد اعلانها چه انتظاری باید داشت:
پیام در محدودهی TTL تحویل داده شد: اگر دستگاه کاربر قبل از انقضای TTL آنلاین شود و پیام را دریافت کند، اعلان
DELIVEREDدریافت خواهید کرد. هیچ اعلان لغو ارسال نخواهد شد، زیرا پیام با موفقیت تحویل داده شده است. این رایجترین و مورد انتظارترین سناریو است.پیام قبل از انقضای TTL تحویل داده نمیشود: اگر TTL قبل از رسیدن پیام به دستگاه کاربر منقضی شود (برای مثال، دستگاه آفلاین باشد)، پلتفرم RCS for Business تلاش میکند تا پیام را لغو کند. شما یک اعلان
TTL_EXPIRATION_REVOKEDدریافت میکنید که نشان میدهد پیام با موفقیت از صف تحویل حذف شده است. در این حالت، کاربر پیام را دریافت نخواهد کرد.
توصیههایی برای رسیدگی به موارد حاشیهای
سیستم ما RCS برای تحویل پیامهای تجاری و انقضای TTL را به صورت موازی پردازش میکند. به همین دلیل، به ندرت ممکن است موارد خاصی را مشاهده کنید که زمانبندی اعلانها غیرمنتظره باشد. به عنوان مثال، ممکن است هم اعلان تحویل و هم اعلان TTL را دریافت کنید یا هیچکدام را دریافت نکنید.
در اینجا توصیههای ما برای مدیریت اعلانهای پیام RCS برای کسبوکار آمده است:
اعلان
DELIVERED: اگر برای یک پیام، اعلانDELIVEREDدریافت کنید، تأیید میکند که پیام به کاربر رسیده است. میتوانید با خیال راحت هرگونه اعلان TTL بعدی برای آن پیام خاص را نادیده بگیرید.اعلان
TTL_EXPIRATION_REVOKED: اگر اعلان TTL با وضعیتTTL_EXPIRATION_REVOKEDدریافت کردید، به این معنی است که سیستم RCS for Business تلاش برای تحویل آن پیام خاص را متوقف میکند. شما باید این پیام را به عنوان پیام تحویل داده نشده در نظر بگیرید و در صورت نیاز، استراتژی جایگزین خود را ادامه دهید.اعلان TTL با هر وضعیت دیگری: اگر اعلان TTL با هر وضعیت دیگری دریافت کردید، این نشان دهنده تلاش بینتیجه برای لغو است.
- برای پیامهای حیاتی، مانند رمزهای عبور یکبار مصرف (OTP)، روش جایگزین خود را آغاز کنید.
- برای پیامهای غیربحرانی، تصمیم بگیرید که آیا میخواهید حالت بازگشت به حالت اولیه را فعال کنید یا خیر.
- عدم اعلان: در موارد نادر، ممکن است سیستم در ارسال اعلان TTL ناموفق باشد و کلاینت نیز نتواند اعلان تحویل را ایجاد کند. این یک مورد بسیار نادر است.
نوع ترافیک پیام را تنظیم کنید
API مربوط به RBM شامل یک فیلد messageTrafficType برای دستهبندی پیامها است. در حالی که موارد استفاده از عامل همچنان رفتار عامل و قوانین تجاری اعمال شده را تعریف میکند، messageTrafficType امکان دستهبندی دقیقتر محتوای پیام را فراهم میکند. در نهایت، این امر امکان مدیریت چندین مورد استفاده را برای یک عامل فراهم میکند. در حال حاضر هیچ تاثیری بر موارد استفاده از عامل یا قوانین تجاری موجود ندارد.
این فیلد اختیاری است، اما توصیه میشود که همین حالا آن را تنظیم کنید تا در صورت اجباری شدن فیلد، خطایی دریافت نکنید.
برای تنظیم نوع ترافیک پیام، بر اساس محتوای هر پیام، messageTrafficType مناسب را به آن اختصاص دهید. RCS for Business از انواع ترافیک زیر پشتیبانی میکند.
| نوع ترافیک | محتوای پیام | مورد استفاده عامل |
|---|---|---|
AUTHENTICATION | برای پیامهای احراز هویت. | یک بار مصرف (OTP) |
TRANSACTION | برای پیامهایی در مورد خدمات یا محصولات فعلی کاربر. به عنوان مثال: تأییدیهها، رسیدهای پرداخت یا جزئیات رزرو. | تراکنشی یا چند منظوره |
PROMOTION | برای پیامهای تبلیغاتی مانند پیشنهادات، تخفیفها، اطلاعیهها یا سایر محتوای تبلیغاتی. | تبلیغاتی یا چند منظوره |
SERVICEREQUEST | برای پیامهایی درباره خدماتی که کاربر صریحاً درخواست کرده است. | رمز یکبار مصرف (OTP)، تراکنشی، تبلیغاتی یا چندمنظوره |
ACKNOWLEDGEMENT | برای پیامهایی که برای تأیید اقدام کاربر استفاده میشوند - به طور خاص درخواست لغو اشتراک. این تأیید میکند که درخواست کاربر دریافت شده و در حال پردازش است. | رمز یکبار مصرف (OTP)، تراکنشی، تبلیغاتی یا چندمنظوره |
اگر هیچ نوع ترافیکی تنظیم نشده باشد، سیستم نوع پیشفرض را برای مورد استفادهی عامل تعیین میکند.
| مورد استفاده عامل | نوع ترافیک پیشفرض |
|---|---|
| یک بار مصرف (OTP) | AUTHENTICATION |
| تراکنشی | TRANSACTION |
| تبلیغاتی | PROMOTION |
| چند منظوره | MESSAGE_TRAFFIC_TYPE_UNSPECIFIED |
عاملهای چندمنظوره نوع ترافیک پیشفرضی ندارند. شما باید نوع ترافیک را برای هر پیام بر اساس محتوای آن به طور صریح تنظیم کنید. اگر مقدار MESSAGE_TRAFFIC_TYPE_UNSPECIFIED را جایگزین نکنید، خطایی رخ میدهد.
محدودیتهای اندازه پیام
حداکثر اندازه کل AgentMessage رشتهای ۲۵۰ کیلوبایت است. بخش متنی پیام محدودیت خاص خود را دارد که ۳۰۷۲ کاراکتر است.
برای جلوگیری از مصرف غیرمنتظره داده برای کاربران، حداکثر اندازه فایلی که میتوان از طریق RCS برای کسبوکار ارسال کرد ۱۰۰ مگابایت است و کل اندازه ترکیبی همه فایلهای رسانهای و PDF پیوستشده در یک پیام RCS برای کسبوکار نباید از ۱۰۰ مگابایت بیشتر شود. (۱ مگابایت = ۱,۰۴۸,۵۷۶ بایت). برای اطلاعات بیشتر، به فایلهای رسانهای و PDF مراجعه کنید.
متن
سادهترین پیامها از متن ساخته شدهاند. پیامهای متنی برای انتقال اطلاعات بدون نیاز به تصاویر، تعاملات پیچیده یا پاسخ، بهترین گزینه هستند.
مثال
کد زیر یک پیام متنی ساده ارسال میکند. برای قالببندی و گزینههای مقداردهی، به phones.agentMessages.create مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!" }, "messageTrafficType": "PROMOTION" }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); let params = { messageText: 'Hello, world!', msisdn: '+12223334444', }; // Send a simple message to the device rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
جاوا
import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Send simple text message to user rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444" ); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a simple RBM text message message_text = messages.TextMessage('Hello, world!') # Send text message to the device messages.MessageCluster().append_message(message_text).send_to_msisdn('+12223334444')
سی شارپ
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", );
محتوای پیام پایه - تبدیل پیامک
اپراتورها مدلهای صورتحساب را برای پشتیبانی از انتقال پیامهای SMS به RCS برای کسبوکارها معرفی کردهاند. یک پیام RCS برای کسبوکار که حاوی حداکثر ۱۶۰ کاراکتر UTF-8 باشد، پیام پایه نامیده میشود.
هنگام ایجاد درخواست ارسال پیام پایه، به یاد داشته باشید که کاراکترها به عنوان ۱ بایت (UTF-8) شمارش میشوند. اگر پیامی حاوی کاراکترهای خاص مانند ایموجی یا یک مجموعه کاراکتر چند بایتی ارسال میکنید، هر کاراکتر به عنوان ۲-۴ کاراکتر UTF-8 یا بیشتر شمارش میشود.
برای بررسی طول متن، آن را در کادر وارد کنید:
پیشنمایش محتوای پیام متنی و لینکها
کلاینتهای RCS ممکن است پیشنمایش لینکها را پیادهسازی کنند. اگر یک پیام RCS برای کسبوکار که فقط متن دارد شامل URL یک وبسایت با برچسبهای openGraph باشد، کلاینت میتواند پیشنمایشی (تصویر، عنوان و غیره) ایجاد کند و تجربه غنیتری را ارائه دهد. برای مثال، به یک پیام ساده با پیشنمایش URL مراجعه کنید.
توجه داشته باشید که کلاینت RCS ممکن است به کاربر اجازه دهد پیشنمایش لینکها را غیرفعال کند.
رمزهای عبور یکبار مصرف برای تأیید کاربر
شما میتوانید از RCS for Business برای ارسال رمزهای عبور یکبار مصرف (OTP) جهت تأیید خودکار کاربر با استفاده از رابط برنامهنویسی کاربردی بازیابی پیامک (SMS Retriever API) استفاده کنید. هیچ رابط برنامهنویسی کاربردی (API) اختصاصی برای خواندن رمزهای عبور یکبار مصرف که از طریق RCS for Business ارسال میشوند، وجود ندارد.
نحوه کار برای اندروید
برای برنامههای اندروید که در API مربوط به SMS Retriever ثبت شدهاند، API به دنبال یک پیام RCS برای کسبوکار با فرمت صحیح میگردد. این پیام باید شامل OTP و یک هش منحصر به فرد باشد که برنامه شما را شناسایی میکند.
وقتی یک پیام RCS برای کسبوکار با فرمت صحیح دریافت میشود، رابط برنامهنویسی کاربردی (API) بازیابی پیامک (SMS Retriever API) آن را درست مانند یک پیام OTP پیامکی پردازش میکند. پس از تطبیق هش با برنامه شما، OTP استخراج شده و برای تأیید خودکار کاربر به برنامه شما ارسال میشود.
- نمونه پیامک RCS برای کسبوکارها جهت تأیید کاربر:
Your code is <OTP><app hash>. - مثال:
Your code is 123456 M8tue43FGT.
برای کسب اطلاعات بیشتر در مورد SMS Retriever و API های مرتبط، به مستندات SMS Retriever مراجعه کنید. برای جزئیات بیشتر در مورد تأیید خودکار کاربر در برنامههایی که با SMS Retriever API ثبت شدهاند، به این نمودار جریان مراجعه کنید.
نحوه کار برای iOS
برای iOS، سیستم مدیریت OTP داخلی سیستم، به طور خودکار OTP های RCS برای کسب و کار را برای پر کردن خودکار، درست مانند OTP های پیامکی، شناسایی و پیشنهاد میدهد. برای خواندن OTP توسط برنامه iOS، نیازی به ادغام API خاصی نیست.
فایلهای رسانهای و PDF
وقتی پیامی حاوی تصویر، ویدیو، صدا یا فایل PDF ارسال میکنید، نماینده شما باید یک URL قابل دسترس برای عموم برای محتوا ارائه دهد یا مستقیماً فایل را آپلود کند.
حداکثر حجم فایلی که میتوان ارسال کرد ۱۰۰ مگابایت است و مجموع حجم تمام فایلهای رسانهای و PDF پیوستشده در یک پیام نباید از ۱۰۰ مگابایت بیشتر شود.
مشخصات تصویر بندانگشتی
برای فایلهای رسانهای، میتوانید یک تصویر کوچک (thumbnail image) نیز مشخص کنید که به کاربران اجازه میدهد قبل از کلیک روی محتوا، پیشنمایشی از آن را مشاهده کنند. برای فایلهای صوتی، ویجت صوتی پیشفرض به عنوان یک نگهدارنده (placeholder) استفاده میشود.
- حداکثر اندازه فایل تصویر بندانگشتی ۱۰۰ کیلوبایت است. برای تجربه کاربری مطلوب، توصیه میکنیم ۵۰ کیلوبایت یا کمتر باشد.
- نسبت ابعاد تصویر کوچک باید با نسبت فایل اصلی مطابقت داشته باشد.
مدیریت ذخیرهسازی و URL
پلتفرم RCS for Business فایلها را به مدت ۶۰ روز در حافظه پنهان (cache) ذخیره میکند و API یک شناسه فایل برمیگرداند که نماینده شما میتواند آن را در پیامهای ارسالی به کاربران قرار دهد. پس از ۶۰ روز، RCS for Business فایلها را از حافظه پنهان حذف میکند.
هنگام مشخص کردن فایلها بر اساس URL، بهتر است مقدار contentMessage.forceRefresh را روی false تنظیم کنید. تنظیم contentMessage.forceRefresh روی true ، RCS for Business را مجبور میکند محتوای جدید را از URL مشخص شده دریافت کند، حتی اگر محتوای URL ذخیره شده باشد، که این امر زمان تحویل پیام را برای کاربران افزایش میدهد.
مثال آدرس فایل
کد زیر یک تصویر ارسال میکند. برای قالببندی و گزینههای مقدار، به AgentContentMessage مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "contentInfo": { "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif", "forceRefresh": false } } }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); let params = { fileUrl: 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif', msisdn: '+12223334444', }; // Send an image/video to a device rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.AgentContentMessage; import com.google.api.services.rcsbusinessmessaging.v1.model.AgentMessage; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); String fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // create media only message AgentContentMessage agentContentMessage = new AgentContentMessage(); agentContentMessage.setContentInfo(new ContentInfo().setFileUrl(fileUrl)); // attach content to message AgentMessage agentMessage = new AgentMessage(); agentMessage.setContentMessage(agentContentMessage); rbmApiHelper.sendAgentMessage(agentMessage, "+12223334444"); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create media file attachment file_message = messages.FileMessage('http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif') messages.MessageCluster().append_message(file_message).send_to_msisdn('+12223334444')
سی شارپ
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); string fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // Create content info with the file url ContentInfo contentInfo = new ContentInfo { FileUrl = fileUrl }; // Attach content info to a message AgentContentMessage agentContentMessage = new AgentContentMessage { ContentInfo = contentInfo, }; // Attach content to message AgentMessage agentMessage = new AgentMessage { ContentMessage = agentContentMessage }; rbmApiHelper.SendAgentMessage(agentMessage, "+12223334444");
از طرف دیگر، میتوانید قبل از ارسال فایل رسانهای در یک پیام با استفاده از files.create آن را آپلود کنید.
مثال آپلود فایل
کد زیر یک فایل ویدیویی و یک فایل تصویر بندانگشتی را آپلود میکند، سپس هر دو فایل را در یک پیام ارسال میکند. برای گزینههای قالببندی و مقداردهی، به files.create و AgentContentMessage مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \ -H "Content-Type: video/mp4" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ --upload-file "FULL_PATH_TO_VIDEO_MEDIA_FILE"# Capture server-specified video file name from response body JSONcurl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \ -H "Content-Type: image/jpeg" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ --upload-file "FULL_PATH_TO_THUMBNAIL_MEDIA_FILE"# Capture server-specified image file name from response body JSONcurl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "uploadedRbmFile": { "fileName": "SERVER-SPECIFIED_VIDEO_FILE_NAME", "thumbnailName": "SERVER-SPECIFIED_THUMBNAIL_FILE_NAME" } } }'
انواع رسانههای پشتیبانیشده
RCS برای کسب و کار از انواع رسانههای زیر پشتیبانی میکند. برای تصاویر کوچک، فقط تصویر/jpeg، تصویر/jpg، تصویر/gif و تصویر/png پشتیبانی میشوند.
| نوع رسانه | نوع سند | پسوند | با کارتهای غنی کار میکند |
|---|---|---|---|
| برنامه/ogg | صدای OGG | .ogx | خیر |
| برنامه/pdf | پی دی اف | پی دی اف | بله (فقط برای پیامهای گوگل در هند) |
| صدا/آک | صدای AAC | .aac | خیر |
| صوتی/mp3 | فایل صوتی MP3 | .mp3 | خیر |
| صوتی/mpeg | صدای MPEG | .mpeg | خیر |
| صدا/mpg | صدای MPG | .mp3 | خیر |
| صوتی/mp4 | صوتی MP4 | .mp4 | خیر |
| صوتی/mp4-latm | صوتی MP4-latm | .mp4 | خیر |
| صوتی/3gpp | صدای 3GPP | .3gp | خیر |
| تصویر/jpeg | JPEG | .jpeg، .jpg | بله |
| تصویر/گیف | گیف | .gif | بله |
| تصویر/png | پی ان جی | .png | بله |
| ویدئو/h263 | ویدئو H263 | .h263 | بله |
| ویدئو/m4v | ویدیوی M4V | .m4v | بله |
| ویدئو/mp4 | ویدئو MP4 | .mp4 | بله |
| ویدئو/mpeg4 | ویدئوی MPEG-4 | .mp4، .m4p | بله |
| ویدئو/mpeg | ویدئوی MPEG | .mpeg | بله |
| ویدیو/وبم | ویدیوی وبام | .وبم | بله |
پیشنهادات
نماینده شما پیشنهادات (پاسخهای پیشنهادی و اقدامات پیشنهادی) را در لیستهای تراشههای پیشنهادی (حداکثر ۱۱ پیشنهاد) یا در کارتهای غنی (حداکثر چهار پیشنهاد) ارسال میکند.
هر پیشنهاد حداکثر ۲۵ کاراکتر دارد.
پاسخهای پیشنهادی
پاسخهای پیشنهادی با ارائه پاسخهایی که نماینده شما میداند چگونه به آنها واکنش نشان دهد، کاربران را در مکالمات راهنمایی میکنند.
وقتی کاربری روی یک پاسخ پیشنهادی ضربه میزند، عامل شما رویدادی را دریافت میکند که حاوی متن پاسخ و دادههای postback است . حداکثر ظرفیت این payload، 2048 کاراکتر است.
مثال
کد زیر متنی را با دو پاسخ پیشنهادی ارسال میکند. برای گزینههای قالببندی و مقدار، به SuggestedReply مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "reply": { "text": "Suggestion #1", "postbackData": "suggestion_1" } }, { "reply": { "text": "Suggestion #2", "postbackData": "suggestion_2" } } ] } }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); let suggestions = [ { reply: { 'text': 'Suggestion #1', 'postbackData': 'suggestion_1', }, }, { reply: { 'text': 'Suggestion #2', 'postbackData': 'suggestion_2', }, }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with suggestion chips to the device rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; import com.google.rbm.SuggestionHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); suggestions.add( new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply()); suggestions.add( new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply()); // Send simple text message to user rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggested replies for the message to send to the user cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1')) cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2')) # Send a simple message with suggestion chips to the device cluster.send_to_msisdn('+12223334444')
سی شارپ
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); List<Suggestion> suggestions = new List<Suggestion> { // Create suggestion chips new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(), new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply() }; // Send simple text message with suggestions to user rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
اقدامات پیشنهادی
اقدامات پیشنهادی با کنار گذاشتن قابلیتهای داخلی دستگاههای کاربران، آنها را در مکالمات راهنمایی میکنند. نماینده شما میتواند به کاربران پیشنهاد دهد که با شمارهای تماس بگیرند، مکانی را روی نقشه باز کنند، مکانی را به اشتراک بگذارند، یک URL باز کنند یا یک رویداد در تقویم ایجاد کنند.
برای هر اقدام پیشنهادی، میتوانید به صورت اختیاری یک URL جایگزین (حداکثر ۲۰۴۸ کاراکتر) ارائه دهید. اگر دستگاه کاربر از اقدام پیشنهادی پشتیبانی نکند، این URL در یک پنجره مرورگر جدید باز میشود.
وقتی کاربری روی یک اقدام پیشنهادی ضربه میزند، عامل شما رویدادی را دریافت میکند که حاوی دادههای postback آن اقدام است .
برای گزینههای قالببندی و مقدار، به SuggestedAction مراجعه کنید.
شماره گیری کنید
اکشن شمارهگیری (Dial) کاربر را به شمارهگیری شماره تلفنی که توسط اپراتور شما مشخص شده است، راهنمایی میکند. شماره تلفنها فقط میتوانند شامل ارقام ( 0-9 )، علامت جمع ( + )، ستاره ( * ) و علامت شماره ( # ) باشند. فرمت بینالمللی E.164 (برای مثال، +14155555555 ) پشتیبانی میشود اما الزامی نیست. یعنی هم +14155555555 و هم 1011 ورودیهای معتبری هستند.
مثال
کد زیر یک عمل شماره گیری (dial action) ارسال میکند. برای قالب بندی و گزینههای مقدار، به DialAction مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Call", "postbackData": "postback_data_1234", "fallbackUrl": "https://www.google.com/contact/", "dialAction": { "phoneNumber": "+15556667777" } } } ] } }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a dial suggested action let suggestions = [ { action: { text: 'Call', postbackData: 'postback_data_1234', dialAction: { phoneNumber: '+15556667777' } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a dial suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.DialAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a dial suggested action DialAction dialAction = new DialAction(); dialAction.setPhoneNumber("+15556667777"); // creating a suggested action based on a dial action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Call"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setDialAction(dialAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a dial suggested action suggestions = [ messages.DialAction('Call', 'reply:postback_data_1234', '+15556667777') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
سی شارپ
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create a dial an agent suggested action DialAction dialAction = new DialAction { PhoneNumber = "+15556667777" }; // Creating a suggested action based on a dial action SuggestedAction suggestedAction = new SuggestedAction { Text = "Call", PostbackData = "postback_data_1234", DialAction = dialAction }; // Attach action to a suggestion Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
مشاهده یک مکان
اکشن View location یک مکان را در برنامه نقشه پیشفرض کاربر نمایش میدهد. میتوانید مکان را یا با طول و عرض جغرافیایی یا با یک پرسوجو بر اساس مکان فعلی کاربر مشخص کنید. همچنین میتوانید یک برچسب سفارشی برای پینی که در برنامه نقشه نمایش داده میشود، تنظیم کنید.
مثال
کد زیر یک اکشن موقعیت مکانی view ارسال میکند. برای قالببندی و گزینههای مقدار، به ViewLocationAction مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "View map", "postbackData": "postback_data_1234", "fallbackUrl": "https://www.google.com/maps/@37.4220188,-122.0844786,15z", "viewLocationAction": { "latLong": { "latitude": "37.4220188", "longitude": "-122.0844786" }, "label": "Googleplex" } } } ] } }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a view location suggested action let suggestions = [ { action: { text: 'View map', postbackData: 'postback_data_1234', viewLocationAction: { latLong: { latitude: 37.4220188, longitude: -122.0844786 }, label: 'Googleplex' } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a view location suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.ViewLocationAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a view location suggested action ViewLocationAction viewLocationAction = new ViewLocationAction(); viewLocationAction.setQuery("Googleplex, Mountain View, CA"); // creating a suggested action based on a view location action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("View map"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setViewLocationAction(viewLocationAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a view location suggested action suggestions = [ messages.ViewLocationAction('View map', 'reply:postback_data_1234', query='Googleplex, Mountain View, CA') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
سی شارپ
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // create an view location action ViewLocationAction viewLocationAction = new ViewLocationAction { Query = "Googleplex Mountain View, CA" }; // Attach the view location action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { ViewLocationAction = viewLocationAction, Text = "View map", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
اشتراک گذاری مکان
اقدام اشتراکگذاری موقعیت مکانی به کاربر اجازه میدهد تا مکانی را با نماینده شما به اشتراک بگذارد. کاربر میتواند یا مکان فعلی خود یا مکانی را که به صورت دستی از برنامه Maps انتخاب کرده است، به اشتراک بگذارد.
مثال
کد زیر یک اکشن اشتراکگذاری موقعیت مکانی ارسال میکند. برای قالببندی و گزینههای مقداردهی، به ShareLocationAction مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Share your location", "postbackData": "postback_data_1234", "shareLocationAction": {} } } ] } }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a share location suggested action let suggestions = [ { action: { text: 'Share your location', postbackData: 'postback_data_1234', shareLocationAction: { } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a share location suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.ShareLocationAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a share location suggested action ShareLocationAction shareLocationAction = new ShareLocationAction(); // creating a suggested action based on a share location action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Share location"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setShareLocationAction(shareLocationAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a share location suggested action suggestions = [ messages.ShareLocationAction('Share location', 'reply:postback_data_1234') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
سی شارپ
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create a share location action ShareLocationAction shareLocationAction = new ShareLocationAction(); // Attach the share location action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { ShareLocationAction = shareLocationAction, Text = "Share location", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
باز کردن یک URL
عمل باز کردن URL به شما امکان میدهد کاربران را به صفحه وبی که توسط نماینده شما مشخص شده است هدایت کنید. به طور پیشفرض، صفحه وب در مرورگر کاربر باز میشود. همچنین میتوانید صفحه وب را طوری تنظیم کنید که در یک نمای وب باز شود. برای جزئیات بیشتر به باز کردن URL با نمای وب مراجعه کنید.
فقط در پیامهای گوگل
نمایش URL اصلی : برای بهبود شفافیت در پیامرسانی A2P، Google Messages آدرس URL اصلی را در اقدامات پیشنهادی «باز کردن یک URL» نمایش میدهد. این تغییر بر اقدامات پیشنهادی در کارتهای غنی استاندارد و چرخوفلکهای کارت غنی تأثیر میگذارد.

نمایش آیکون برنامه برای لینکهای وب : اگر کاربر یک برنامه پیشفرض برای صفحه وب پیکربندی کرده باشد، آن برنامه به جای مرورگر یا نمای وب باز میشود و دکمه پیشنهاد، آیکون برنامه را نمایش میدهد. برای اینکه آیکون برنامه در پیامهای گوگل ظاهر شود، باید URL کامل و مستقیم را ارائه دهید. اگر از URL کوتاهشده استفاده میکنید، آیکون پیشفرض Open URL به جای آن نمایش داده میشود.

مثال
کد زیر یک اکشن باز کردن URL ارسال میکند. برای قالببندی و گزینههای مقداردهی، به OpenUrlAction مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Open Google", "postbackData": "postback_data_1234", "openUrlAction": { "url": "https://www.google.com" } } } ] } }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define an open URL suggested action let suggestions = [ { action: { text: 'Open Google', postbackData: 'postback_data_1234', openUrlAction: { url: 'https://www.google.com' } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with an open URL suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating an open url suggested action OpenUrlAction openUrlAction = new OpenUrlAction(); openUrlAction.setUrl("https://www.google.com"); // creating a suggested action based on an open url action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Open Google"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setOpenUrlAction(openUrlAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create an open url suggested action suggestions = [ messages.OpenUrlAction('Open Google', 'reply:postback_data_1234', 'https://www.google.com') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
سی شارپ
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create an open url action OpenUrlAction openUrlAction = new OpenUrlAction { Url = "https://www.google.com" }; // Attach the open url action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { OpenUrlAction = openUrlAction, Text = "Open Google", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
باز کردن یک URL با وب ویو
عمل «باز کردن URL با نمای وب» صفحه وب مشخص شده را درون برنامه پیامرسان با موتور رندر مرورگر پیشفرض شما بارگذاری میکند. این به کاربر اجازه میدهد بدون ترک مکالمه RCS for Business با صفحه وب تعامل داشته باشد. اگر دستگاه کاربر از نمای وب پشتیبانی نکند، صفحه وب در مرورگر کاربر باز میشود. برای فعال کردن نمای وب، به OpenURLApplication مراجعه کنید.
وبویوها سه حالت نمایش دارند. برای قالببندی و گزینههای مقداردهی، به WebviewViewMode مراجعه کنید.
- کامل: صفحه وب تمام صفحه را اشغال میکند
- نصف: صفحه وب نیمی از صفحه نمایش را اشغال میکند
- بلند: صفحه وب سه چهارم صفحه نمایش را اشغال میکند.
مثال
کد زیر یک Open URL با اکشن webview ارسال میکند. برای قالببندی و گزینههای مقداردهی، به OpenURLAction مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Open Google", "postbackData": "postback_data_1234", "openUrlAction": { "url": "https://www.google.com", "application": "WEBVIEW", "webviewViewMode": "FULL", "description": "Accessibility description" } } } ] } }'
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { String URL = "https://www.google.com"; // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // Create suggestion to view webpage in full mode Suggestion viewInFullMode = getUrlActionInWebview(URL, "FULL") suggestions.add(viewInFullMode); // create suggestion to view webpage in half mode Suggestion viewInHalfMode = getUrlActionInWebview(URL, "HALF") suggestions.add(viewInHalfMode); // create suggestion to view webpage in tall mode Suggestion viewInTallMode = getUrlActionInWebview(URL, "TALL") suggestions.add(viewInTallMode); // Send simple text message with the suggested action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); } /** * Creates a suggested action to open URL in webview. * * @return a suggestion object for an open URL in webview action . */ private Suggestion getUrlActionInWebview(String url, String viewMode) { // create an open url action OpenUrlAction openUrlAction = new OpenUrlAction(); openUrlAction.setUrl(url); openUrlAction.setApplication("WEBVIEW"); openUrlAction.setWebviewViewMode(viewMode); openUrlAction.setDescription("Accessibility description"); // attach the open url action to a suggested action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setOpenUrlAction(openUrlAction); suggestedAction.setText('display_text'); suggestedAction.setPostbackData('postback_data_123'); // attach the action to a suggestion object Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); return suggestion; }
ایجاد رویداد تقویم
اکشن «ایجاد رویداد تقویم» برنامه تقویم کاربر را باز میکند و شروع به ایجاد یک رویداد جدید با اطلاعات مشخص شده میکند.
عنوان رویداد تقویم الزامی است. حداکثر ۱۰۰ کاراکتر دارد. شرح رویداد تقویم اختیاری است و حداکثر ۵۰۰ کاراکتر دارد.
مثال
کد زیر یک اکشن رویداد ایجاد تقویم ارسال میکند. برای گزینههای قالببندی و مقداردهی، به CreateCalendarEventAction مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Save to calendar", "postbackData": "postback_data_1234", "fallbackUrl": "https://www.google.com/calendar", "createCalendarEventAction": { "startTime": "2020-06-30T19:00:00Z", "endTime": "2020-06-30T20:00:00Z", "title": "My calendar event", "description": "Description of the calendar event" } } } ] } }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a create calendar event suggested action let suggestions = [ { action: { text: 'Save to calendar', postbackData: 'postback_data_1234', createCalendarEventAction: { startTime: '2020-06-30T19:00:00Z', endTime: '2020-06-30T20:00:00Z', title: 'My calendar event', description: 'Description of the calendar event', }, } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a create calendar event suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.CreateCalendarEventAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a create calendar event suggested action CreateCalendarEventAction createCalendarEventAction = new CreateCalendarEventAction(); calendarEventAction.setTitle("My calendar event"); calendarEventAction.setDescription("Description of the calendar event"); calendarEventAction.setStartTime("2020-06-30T19:00:00Z"); calendarEventAction.setEndTime("2020-06-30T20:00:00Z"); // creating a suggested action based on a create calendar event action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Save to calendar"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setCreateCalendarEventAction(createCalendarEventAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a calendar event suggested action suggestions = [ messages.CreateCalendarEventAction('Save to Calendar', 'reply:postback_data_1234', '2020-06-30T19:00:00Z', '2020-06-30T20:00:00Z', 'My calendar event', 'Description of the calendar event') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
سی شارپ
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create a calendar event action CreateCalendarEventAction calendarEventAction = new CreateCalendarEventAction { Title = "My calendar event", Description = "Description of the calendar event", StartTime = "2020-06-30T19:00:00Z", EndTime = "2020-06-30T20:00:00Z" }; // Attach the calendar event action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { CreateCalendarEventAction = calendarEventAction, Text = "Save to calendar", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
لیست تراشههای پیشنهادی
نماینده شما لیستهای پیشنهادی چیپها را به همراه پیامهایی برای راهنمایی اقدامات بعدی کاربران ارسال میکند. لیست چیپها فقط زمانی نمایش داده میشود که پیام مرتبط در انتهای مکالمه باشد. هر پیام بعدی در مکالمه (از طرف کاربر یا نماینده شما) لیست چیپها را بازنویسی میکند.
تراشههای موجود در لیست ، پاسخهای پیشنهادی و اقدامات پیشنهادی هستند.
لیست تراشهها حداکثر شامل ۱۱ تراشه پیشنهادی است و هر برچسب تراشه میتواند حداکثر ۲۵ کاراکتر داشته باشد.
برای گزینههای قالببندی و مقدار، به AgentContentMessage مراجعه کنید.
کارتهای غنی
کارتهای غنی، رسانه، متن و پیشنهادات تعاملی را در یک پیام واحد ترکیب میکنند. آنها برای ارائه اطلاعات مرتبط (به عنوان مثال، یک محصول با تصویر، نام و قیمت آن) و راهنمایی کاربران با گام بعدی واضح مانند پیشنهاد «مشاهده جزئیات» ایدهآل هستند.
یک کارت غنی میتواند شامل موارد زیر باشد:
- رسانه (تصویر، گیف یا ویدیو)
- متن عنوان
- متن توضیحات
- پاسخهای پیشنهادی و اقدامات پیشنهادی (حداکثر ۴ مورد)
هر یک از این فیلدها اختیاری است، اما حداقل یکی از فیلدهای ۱ تا ۳ باید در کارت غنی (rich card) گنجانده شود.
چندین کارت را میتوان با هم در یک چرخ فلک با پیمایش افقی ارسال کرد.
توجه داشته باشید که کل حجم داده برای یک کارت غنی ۲۵۰ کیلوبایت است.
برای جزئیات فنی کامل، به مستندات Rich cards مراجعه کنید.
ارتفاع کارت
کارتهای غنی (ریچ کاردها) به صورت عمودی گسترش مییابند تا با محتوای خود متناسب شوند. حداقل ارتفاع آنها 112 DP و حداکثر ارتفاع آنها 344 DP است. اگر محتوای کارت به اندازه کافی بزرگ نباشد تا حداقل ارتفاع کارت را پر کند، کارت گسترش مییابد و ارتفاع اضافی را با فضای خالی پر میکند.
رسانهها در کارتهای غنی باید با یکی از سه ارتفاع زیر مطابقت داشته باشند:
- کوتاه: ۱۱۲ دیپی
- متوسط: ۱۶۸ DP
- قد بلند: ۲۶۴ DP
اگر رسانه با توجه به ارتفاع انتخاب شده، ابعاد درون کارت را نداشته باشد، پیشنمایش رسانه با بزرگنمایی و برش رسانه انتخاب میشود.
مثال
کد زیر یک کارت غنی (rich card) به همراه یک تصویر و پاسخهای پیشنهادی ارسال میکند. برای قالببندی و گزینههای مقداردهی، به RichCard مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "richCard": { "standaloneCard": { "thumbnailImageAlignment": "RIGHT", "cardOrientation": "VERTICAL", "cardContent": { "title": "Hello, world!", "description": "RBM is awesome!", "media": { "height": "TALL", "contentInfo":{ "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif", "forceRefresh": false } }, "suggestions": [ { "reply": { "text": "Suggestion #1", "postbackData": "suggestion_1" } }, { "reply": { "text": "Suggestion #2", "postbackData": "suggestion_2" } } ] } } } } }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Suggested replies to be used in the card let suggestions = [ { reply: { 'text': 'Suggestion #1', 'postbackData': 'suggestion_1', }, }, { reply: { 'text': 'Suggestion #2', 'postbackData': 'suggestion_2', }, }, ]; // Image to be displayed by the card let imageUrl = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif'; // Definition of the card parameters let params = { messageText: 'Hello, world!', messageDescription: 'RBM is awesome!', msisdn: '+12223334444', suggestions: suggestions, imageUrl: imageUrl, height: 'TALL', }; // Send rich card to device rbmApiHelper.sendRichCard(params, function(response) { console.log(response); });
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.StandaloneCard; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.cards.CardOrientation; import com.google.rbm.cards.MediaHeight; import com.google.rbm.RbmApiHelper; import com.google.rbm.SuggestionHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); suggestions.add( new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply()); suggestions.add( new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply()); String imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // Create a standalone rich card to send to the user StandaloneCard standaloneCard = rbmApiHelper.createStandaloneCard( "Hello, world!", "RBM is awesome!", imageUrl, MediaHeight.MEDIUM, CardOrientation.VERTICAL, suggestions ); rbmApiHelper.sendStandaloneCard(standaloneCard, "+12223334444"); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Suggested replies to be used in the card suggestions = [ messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1'), messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2') ] # Image to be displayed by the card image_url = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif'; # Define rich card structure rich_card = messages.StandaloneCard('VERTICAL', 'Hello, world!', 'RBM is awesome!', suggestions, image_url, None, None, 'MEDIUM') # Append rich card and send to the user cluster = messages.MessageCluster().append_message(rich_card) cluster.send_to_msisdn('+12223334444')
سی شارپ
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; using RCSBusinessMessaging.Cards; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); List<Suggestion> suggestions = new List<Suggestion> { // Create suggestion chips new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(), new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply() }; string imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // Create rich card with suggestions StandaloneCard standaloneCard = rbmApiHelper.CreateStandaloneCard( "Hello, world!", "RBM is awesome", imageUrl, MediaHeight.TALL, CardOrientation.VERTICAL, suggestions ); // Send rich card to user rbmApiHelper.SendStandaloneCard(standaloneCard, "+12223334444");
چرخ فلک کارتهای غنی
چرخ و فلکها چندین کارت غنی را کنار هم قرار میدهند و به کاربران اجازه میدهند موارد را با هم مقایسه کنند و به هر کدام به صورت جداگانه واکنش نشان دهند.
چرخ و فلکها میتوانند حداقل دو و حداکثر ده کارت غنی داشته باشند. کارتهای غنی درون چرخ و فلکها باید با الزامات عمومی کارتهای غنی برای محتوا و ارتفاع، همانطور که در مستندات کارتهای غنی توضیح داده شده است، مطابقت داشته باشند. برای اطلاعات بیشتر در مورد طرح و مشخصات چرخ و فلک، به مستندات چرخ و فلک مراجعه کنید.
مثال
کد زیر یک چرخ فلک rich card ارسال میکند. برای قالببندی و گزینههای مقدار، به RichCard مراجعه کنید.
حلقه
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "richCard": { "carouselCard": { "cardWidth": "MEDIUM", "cardContents": [ { "title": "Card #1", "description": "The description for card #1", "suggestions": [ { "reply": { "text": "Card #1", "postbackData": "card_1" } } ], "media": { "height": "MEDIUM", "contentInfo": { "fileUrl": "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg", "forceRefresh": false } } }, { "title": "Card #2", "description": "The description for card #2", "suggestions": [ { "reply": { "text": "Card #2", "postbackData": "card_2" } } ], "media": { "height": "MEDIUM", "contentInfo": { "fileUrl": "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg", "forceRefresh": false } } } ] } } } }'
نود جی اس
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Images for the carousel cards let card1Image = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg'; let card2Image = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg'; // Define the card contents for a carousel with two cards, each with one suggested reply let cardContents = [ { title: 'Card #1', description: 'The description for card #1', suggestions: [ { reply: { text: 'Card #1', postbackData: 'card_1', } } ], media: { height: 'MEDIUM', contentInfo: { fileUrl: card1Image, forceRefresh: false, }, }, }, { title: 'Card #2', description: 'The description for card #2', suggestions: [ { reply: { text: 'Card #2', postbackData: 'card_2', } } ], media: { height: 'MEDIUM', contentInfo: { fileUrl: card2Image, forceRefresh: false, }, }, }, ]; // Definition of carousel card let params = { msisdn: '+12223334444', cardContents: cardContents, }; // Send the device the carousel card defined above rbmApiHelper.sendCarouselCard(params, function(response) { console.log(response); });
جاوا
import com.google.api.services.rcsbusinessmessaging.v1.model.CardContent; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.cards.CardOrientation; import com.google.rbm.cards.CardWidth; import com.google.rbm.cards.MediaHeight; import com.google.rbm.RbmApiHelper; import com.google.rbm.SuggestionHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); List cardContents = new ArrayList(); // Images for the carousel cards String card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg"; // Create suggestions for first carousel card List card1Suggestions = new ArrayList(); card1Suggestions.add( new SuggestionHelper("Card #1", "card_1")); cardContents.add( new StandaloneCardHelper( "Card #1", "The description for card #1", card1Image, card1Suggestions) .getCardContent(MediaHeight.SHORT) ); // Images for the carousel cards String card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg"; // Create suggestions for second carousel card List card2Suggestions = new ArrayList(); card2Suggestions.add( new SuggestionHelper("Card #2", "card_2")); cardContents.add( new StandaloneCardHelper( "Card #2", "The description for card #2", card2Image, card2Suggestions) .getCardContent(MediaHeight.SHORT) ); // Send the carousel to the user rbmApiHelper.sendCarouselCards(cardContents, CardWidth.MEDIUM, "+12223334444"); } catch(Exception e) { e.printStackTrace(); }
پایتون
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Images for the carousel cards card_image_1 = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg'; card_image_2 = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg'; # Suggested replies to be used in the cards suggestions1 = [ messages.SuggestedReply('Card #1', 'reply:card_1') ] suggestions2 = [ messages.SuggestedReply('Card #2', 'reply:card_2') ] # Define the card contents for a carousel with two cards, # each with one suggested reply card_contents = [] card_contents.append(messages.CardContent('Card #1', 'The description for card #1', card_image_1, 'MEDIUM', suggestions1)) card_contents.append(messages.CardContent('Card #2', 'The description for card #2', card_image_2, 'MEDIUM', suggestions2)) # Send the device the carousel card defined above carousel_card = messages.CarouselCard('MEDIUM', card_contents) cluster = messages.MessageCluster().append_message(carousel_card) cluster.send_to_msisdn('+12223334444')
سی شارپ
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; using RCSBusinessMessaging.Cards; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Image references to be used in the carousel cards string card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg"; string card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg"; // Suggestion chip lists to be used in carousel cards List<Suggestion> suggestions1 = new List<Suggestion> { new SuggestionHelper("Card #1", "card_1").SuggestedReply() }; List<Suggestion> suggestions2 = new List<Suggestion> { new SuggestionHelper("Card #2", "card_2").SuggestedReply() }; // Create the card content for the carousel List<CardContent> cardContents = new List<CardContent> { // Add items as card content new StandaloneCardHelper( "Card #1", "The description for card #1", card1Image, suggestions1).GetCardContent(), new StandaloneCardHelper( "Card #2", "The description for card #2", card2Image, suggestions2).GetCardContent() }; // Send the carousel to the user rbmApiHelper.SendCarouselCards(cardContents, CardWidth.MEDIUM, msisdn);