عوامل RBM با ارسال و دریافت پیام با کاربران ارتباط برقرار می کنند. برای ارسال پیام به کاربران، نماینده شما درخواستهای پیام را به RCS Business Messaging API ارسال میکند. یک درخواست می تواند شامل متن ، کارت های غنی ، رسانه و فایل های پی دی اف ، و همچنین پاسخ های پیشنهادی و اقدامات پیشنهادی باشد.
پلتفرم RBM در موقعیتهای خاص خطاها را برمیگرداند تا به شما در مدیریت تحویل پیام کمک کند:
- اگر به کاربری که دستگاهش از RCS پشتیبانی نمیکند یا RCS را فعال نمیکند پیامی ارسال کنید، پلتفرم RBM خطای 404 NOT_FOUND را برمیگرداند. در این صورت میتوانید از طریق روشهای بازگشتی تعریفشده در زیرساخت خود، سعی کنید به کاربر دسترسی پیدا کنید.
- اگر برای یک کاربر RCS در شبکهای که عامل شما هنوز راهاندازی نشده است، یا در شبکهای که ترافیک RCS را فعال نکرده است، پیام ارسال کنید، پلتفرم RBM خطای 404 NOT_FOUND را برمیگرداند.
- اگر پیامی با ویژگیهایی ارسال کنید که دستگاه کاربر از آن پشتیبانی نمیکند، پلتفرم RBM خطای 400 INVALID_ARGUMENT را برمیگرداند و پیام شما را تحویل نمیدهد.
به عنوان بخشی از استراتژی پیامرسانی چند کاناله، بهتر است پیامهایی را که پس از مدت زمانی معقول تحویل داده نشدهاند لغو کنید و از طریق کانال دیگری ارسال کنید. برای لغو خودکار پیام ها در یک زمان از پیش تعریف شده، انقضای پیام را تنظیم کنید.
گیرنده آفلاین است
اگر گیرنده آفلاین باشد، پلتفرم RBM همچنان پیامی را برای تحویل میپذیرد. شما یک پاسخ 200 OK دریافت میکنید و پلتفرم RBM پیام را نگه میدارد و به مدت 30 روز برای تحویل مجدد تلاش میکند. نیازی به درخواست RBM برای ارسال مجدد پیام نیست.
RBM 30 روز پس از ارسال پیامهای تحویلنگرفته را حذف میکند.
بسته به مورد استفاده نماینده خود، ممکن است بخواهید قبل از این مهلت زمانی 30 روزه ، پیام تحویلنشده را لغو کنید . لغو میتواند از دریافت پیام قدیمی توسط کاربران آفلاین هنگام بازگشت به اینترنت جلوگیری کند. چندین راه برای لغو یک پیام وجود دارد:
- یک درخواست ابطال برای شروع ابطال ارسال کنید .
- انقضای پیام را تنظیم کنید تا به طور خودکار پیام در زمان مناسب لغو شود.
انقضای پیام را تنظیم کنید
آیا زمان پیام نماینده شما حساس است؟ به عنوان مثال، OTP ها فقط برای یک دوره کوتاه معتبر هستند. پیشنهادات با زمان محدود منقضی می شود. و یادآوریهای قرار بعد از تاریخ قرار دیگر مرتبط نیستند. برای به موقع و مرتبط نگه داشتن پیام ها، انقضای پیام را تنظیم کنید. این می تواند از دریافت محتوای قدیمی کاربران آفلاین در هنگام بازگشت به اینترنت جلوگیری کند. انقضا همچنین نشانه خوبی برای استفاده از استراتژی پیامرسانی مجدد است تا کاربران اطلاعات مورد نیاز خود را به موقع دریافت کنند.
برای تنظیم انقضای پیام، یکی از فیلدهای زیر را در پیام عامل مشخص کنید:
-
expireTime
: زمان دقیق در UTC زمانی که پیام منقضی می شود. -
ttl
(زمان برای زندگی): مدت زمان قبل از انقضای پیام.
برای گزینههای قالببندی و مقدار، AgentMessage
ببینید.
هنگامی که پیام منقضی می شود، پلت فرم RBM تلاش برای ارائه پیام را متوقف می کند و به طور خودکار لغو می شود. با این حال، این ممکن است در موارد نادر شکست بخورد. برای مثال، API میتواند لغو را در زمانی که پلتفرم RBM در حال تحویل پیام است، راهاندازی کند. برای تأیید اینکه آیا پیام منقضی شده با موفقیت ابطال شده است یا خیر، RBM یک رویداد اعلان به وب هوک شما ارسال می کند.
حداکثر مقدار ttl
و expireTime
15 روز پس از ارسال پیام است.
در حالی که حداقل مقدار ttl
و expireTime
وجود ندارد، حداقل 10 ثانیه پس از ارسال پیام توصیه می شود تا شانس دریافت اعلان لغو و تحویل را به میزان قابل توجهی کاهش دهد.
نوع ترافیک پیام را تنظیم کنید
RBM API شامل یک قسمت messageTrafficType
برای دسته بندی پیام ها است. در حالی که موارد استفاده از عامل هنوز رفتار نماینده و قوانین تجاری را تعریف می کند، messageTrafficType
امکان طبقه بندی دقیق تری از محتوای پیام را فراهم می کند. در نهایت، این امکان را برای یک نماینده واحد فراهم میکند تا موارد استفاده متعدد را مدیریت کند. در حال حاضر هیچ تاثیری بر موارد استفاده از عامل یا قوانین تجاری موجود نیست.
این فیلد اختیاری است، اما توصیه میشود که اکنون آن را تنظیم کنید تا زمانی که فیلد مورد نیاز است، خطایی دریافت نکنید.
برای تنظیم نوع ترافیک پیام، messageTrafficType
مناسب را برای هر پیام بر اساس محتوای آن اختصاص دهید. RBM از انواع ترافیک زیر پشتیبانی می کند.
نوع ترافیک | محتوای پیام | مورد استفاده نماینده |
---|---|---|
AUTHENTICATION | برای پیام های احراز هویت | OTP |
TRANSACTION | برای پیام های مربوط به خدمات یا محصولات موجود کاربر. به عنوان مثال: تأییدیه، رسید پرداخت، یا جزئیات رزرو. | معاملاتی یا چند منظوره |
PROMOTION | برای پیامهای تبلیغاتی مانند پیشنهادات، تخفیفها، اطلاعیهها یا سایر محتوای تبلیغاتی. | تبلیغاتی یا چند منظوره |
SERVICEREQUEST | برای پیام هایی در مورد خدماتی که کاربر صریحاً درخواست کرده است. | OTP، تراکنشی، تبلیغاتی یا چند منظوره |
ACKNOWLEDGEMENT | برای پیامهایی که برای تأیید عملکرد کاربر استفاده میشوند - بهویژه درخواست لغو اشتراک. این تأیید می کند که درخواست کاربر دریافت شده و در حال پردازش است. | OTP، تراکنشی، تبلیغاتی یا چند منظوره |
اگر نوع ترافیک تنظیم نشده باشد، سیستم نوع پیشفرض را برای مورد استفاده عامل اختصاص میدهد.
مورد استفاده نماینده | نوع ترافیک پیش فرض |
---|---|
OTP | AUTHENTICATION |
معامله ای | TRANSACTION |
تبلیغاتی | PROMOTION |
چند منظوره | MESSAGE_TRAFFIC_TYPE_UNSPECIFIED |
عامل های چند منظوره هیچ نوع ترافیک پیش فرضی ندارند. شما باید نوع ترافیک را برای هر پیام بر اساس محتوای آن به صراحت تنظیم کنید. اگر مقدار MESSAGE_TRAFFIC_TYPE_UNSPECIFIED
را جایگزین نکنید، خطایی رخ می دهد.
محدودیت اندازه پیام
حداکثر اندازه کل AgentMessage رشته ای 250 کیلوبایت است. بخش متنی پیام دارای محدودیت خاص خود 3072 کاراکتر است.
حداکثر حجم فایل قابل ارسال از طریق RBM 100 مگابایت است. برای اطلاعات بیشتر به فایل های رسانه و PDF مراجعه کنید.
متن
ساده ترین پیام ها از متن ساخته شده اند. پیامهای متنی برای انتقال اطلاعات بدون نیاز به تصاویر بصری، تعامل پیچیده یا پاسخ مناسب هستند.
مثال
کد زیر یک پیام متنی ساده ارسال می کند. برای گزینههای قالببندی و مقدار، به phones.agentMessages.create
مراجعه کنید.
CURL
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" }'
Node.js
// 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", );
محتوای پیام اصلی - تبدیل پیامک
اپراتورها مدل های صورتحساب را برای پشتیبانی از انتقال پیامک به RBM معرفی کرده اند. پیام RBM حاوی حداکثر 160 کاراکتر UTF-8، پیام اصلی نامیده می شود.
هنگام ساخت یک درخواست برای ارسال یک پیام اصلی، به یاد داشته باشید که کاراکترها به عنوان 1 بایت (UTF-8) شمارش می شوند. اگر پیامی حاوی نویسههای خاص مانند شکلک یا مجموعه کاراکترهای چند بایتی ارسال میکنید، هر نویسه 2-4 نویسه UTF-8 یا بیشتر به حساب میآید.
مقداری متن را در کادر وارد کنید تا طول آن را بررسی کنید:
محتوای پیام اصلی و پیش نمایش پیوندها
مشتریان RCS ممکن است پیش نمایش پیوندها را پیاده سازی کنند. اگر یک پیام RBM فقط متنی شامل یک URL برای یک وبسایت با برچسبهای openGraph باشد، ممکن است یک تصویر پیشنمایش نمایش داده شود که محتوای غنیتری را نشان دهد.
توجه داشته باشید که سرویس گیرنده RCS ممکن است به کاربر اجازه دهد پیش نمایش پیوندها را غیرفعال کند.
رمزهای عبور یکبار مصرف برای تأیید کاربر
میتوانید از RBM برای ارسال رمزهای عبور یکبار مصرف (OTP) برای تأیید خودکار کاربر با SMS Retriever API استفاده کنید. API اختصاصی برای خواندن OTPهایی که از طریق RBM وارد می شوند وجود ندارد.
چگونه برای اندروید کار می کند
برای برنامههای Android که با SMS Retriever API ثبتنام کردهاند، API به پیام RBM فرمتشده درست گوش میدهد. این پیام باید حاوی OTP و یک هش منحصر به فرد باشد که برنامه شما را شناسایی کند.
هنگامی که یک پیام RBM با فرمت صحیح دریافت می شود، SMS Retriever API آن را درست مانند یک پیام OTP پردازش می کند. پس از تطبیق هش با برنامه شما، OTP استخراج شده و برای تأیید خودکار کاربر به برنامه شما ارسال می شود.
- نمونه پیام متنی RBM برای تأیید کاربر:
Your code is <OTP> <app hash>.
- مثال:
Your code is 123456 M8tue43FGT.
برای کسب اطلاعات بیشتر در مورد SMS Retriever و APIهای مرتبط، به مستندات SMS Retriever مراجعه کنید. برای جزئیات در مورد تأیید خودکار کاربر در برنامههایی که با SMS Retriever API ثبت شدهاند، این نمودار جریان را ببینید.
چگونه برای iOS کار می کند
برای iOS، سیستم OTP داخلی سیستم بهطور خودکار OTPهای RBM را برای تکمیل خودکار شناسایی و پیشنهاد میکند، درست مانند OTPهای SMS. هیچ یکپارچه سازی API خاصی برای برنامه iOS برای خواندن OTP لازم نیست.
فایل های رسانه ای و پی دی اف
وقتی پیامی با تصویر، ویدیو، فایل صوتی یا PDF ارسال میکنید، نماینده شما باید یک URL در دسترس عموم برای محتوا ارائه کند یا فایل را مستقیماً آپلود کند. برای فایلهای رسانهای، میتوانید یک تصویر کوچک نیز مشخص کنید که به کاربران اجازه میدهد پیشنمایش محتوا را قبل از کلیک بر روی آن مشاهده کنند. برای فایلهای صوتی، ویجت صوتی پیشفرض بهعنوان مکاننما استفاده میشود.
پلتفرم RBM فایلها را به مدت 60 روز در حافظه پنهان نگه میدارد و API شناسه فایلی را که نماینده شما میتواند در پیامها به کاربران اضافه کند، برمیگرداند. پس از 60 روز، RBM فایل ها را از حافظه پنهان حذف می کند.
هنگام تعیین فایلها بر اساس URL، بهترین کار این است که contentMessage.forceRefresh
را روی false
تنظیم کنید. تنظیم contentMessage.forceRefresh
روی true
RBM را مجبور میکند تا محتوای جدید را از URL مشخص شده دریافت کند، حتی اگر محتوای URL در حافظه پنهان باشد، که زمان تحویل پیام را برای کاربران افزایش میدهد.
بهترین روشها را برای توصیهها و محدودیتهای اندازه فایل مشاهده کنید.
نمونه URL فایل
کد زیر یک تصویر را ارسال می کند. برای گزینه های قالب بندی و مقدار، AgentContentMessage
ببینید.
CURL
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 } } }'
Node.js
// 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
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 JSON
curl -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 JSON
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": { "uploadedRbmFile": { "fileName": "SERVER-SPECIFIED_VIDEO_FILE_NAME", "thumbnailName": "SERVER-SPECIFIED_THUMBNAIL_FILE_NAME" } } }'
انواع رسانه های پشتیبانی شده
RBM از انواع رسانه های زیر پشتیبانی می کند. برای تصاویر کوچک، فقط تصویر/jpeg، تصویر/jpg، تصویر/گیف، و تصویر/png پشتیبانی میشود.
نوع رسانه | نوع سند | پسوند | با کارت های غنی کار می کند |
---|---|---|---|
برنامه/ogg | صدای OGG | ogx | خیر |
اپلیکیشن/pdf | خیر | ||
صوتی/aac | صوتی 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 | .gif | بله |
تصویر/png | PNG | .png | بله |
ویدیو/h263 | ویدیوی H263 | .h263 | بله |
ویدئو/m4v | ویدئوی M4V | m4v | بله |
ویدئو/mp4 | ویدیو MP4 | mp4 | بله |
ویدئو/mpeg4 | ویدئو MPEG-4 | mp4، .m4p | بله |
ویدئو/MPEG | ویدئو MPEG | mpeg | بله |
ویدئو/وب | ویدئو WEBM | .webm | بله |
پیشنهادات
نماینده شما پیشنهادات (پاسخهای پیشنهادی و اقدامات پیشنهادی) را در فهرستهای تراشه پیشنهادی (حداکثر 11 پیشنهاد) یا در کارتهای غنی (حداکثر چهار پیشنهاد) ارسال میکند.
هر پیشنهاد حداکثر 25 کاراکتر دارد.
پاسخ های پیشنهادی
پاسخهای پیشنهادی با ارائه پاسخهایی که نماینده شما میداند چگونه به آنها واکنش نشان دهد، کاربران را در گفتگوها راهنمایی میکند.
هنگامی که کاربر روی یک پاسخ پیشنهادی ضربه میزند، نماینده شما رویدادی را دریافت میکند که حاوی متن پاسخ و دادههای بازپسگیری است. محموله حداکثر 2048 کاراکتر دارد.
مثال
کد زیر متنی را با دو پاسخ پیشنهادی ارسال می کند. برای گزینههای قالببندی و مقدار، به SuggestedReply
مراجعه کنید.
CURL
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" } } ] } }'
Node.js
// 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 بازگشتی (حداکثر 2048 نویسه) ارائه دهید. اگر دستگاه کاربر از عملکرد پیشنهادی پشتیبانی نکند، این URL در یک پنجره مرورگر جدید باز میشود.
وقتی کاربر روی یک کنش پیشنهادی ضربه میزند، نماینده شما رویدادی را دریافت میکند که حاوی دادههای پسبازگشت کنش است.
برای گزینههای قالببندی و مقدار، به SuggestedAction
مراجعه کنید.
یک شماره بگیرید
عمل شماره گیری کاربر را راهنمایی می کند تا شماره تلفن مشخص شده توسط نماینده شما را شماره گیری کند. شماره تلفنها فقط میتوانند شامل ارقام ( 0-9
)، علامت مثبت ( +
)، ستاره ( *
) و علامت عدد ( #
) باشند. فرمت بین المللی E.164 (به عنوان مثال +14155555555
) پشتیبانی می شود اما لازم نیست. یعنی هر دو +14155555555
و 1011
ورودی معتبر هستند.
مثال
کد زیر یک عمل شماره گیری را ارسال می کند. برای گزینههای قالببندی و مقدار، به DialAction
مراجعه کنید.
CURL
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" } } } ] } }'
Node.js
// 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 یک مکان را در برنامه نقشه پیش فرض کاربر نشان می دهد. شما می توانید مکان را بر اساس طول و عرض جغرافیایی یا با پرس و جو بر اساس مکان فعلی کاربر مشخص کنید. همچنین می توانید یک برچسب سفارشی برای پینی که در برنامه نقشه نمایش داده می شود تنظیم کنید.
مثال
کد زیر یک عملکرد مکان نمایش را ارسال می کند. برای گزینههای قالببندی و مقدار، ViewLocationAction
ببینید.
CURL
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" } } } ] } }'
Node.js
// 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
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": {} } } ] } }'
Node.js
// 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 با مشاهده وب را ببینید.
مثال
کد زیر یک اقدام URL باز ارسال می کند. برای گزینههای قالببندی و مقدار، به OpenUrlAction
مراجعه کنید.
CURL
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" } } } ] } }'
Node.js
// 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 با مشاهده وب، صفحه وب مشخص شده را در داخل برنامه پیام رسانی با موتور رندر مرورگر پیش فرض شما بارگیری می کند. این به کاربر اجازه می دهد تا بدون ترک مکالمه RBM با صفحه وب ارتباط برقرار کند. اگر دستگاه کاربر از مشاهده وب پشتیبانی نمی کند، به جای آن صفحه وب در مرورگر کاربر باز می شود. برای فعال کردن نمای وب، به OpenURLApplication
مراجعه کنید.
نمای وب دارای سه حالت نمایش است. برای گزینههای قالببندی و مقدار، به WebviewViewMode
مراجعه کنید.
- کامل: صفحه وب تمام صفحه را اشغال می کند
- نیمه: صفحه وب نیمی از صفحه را اشغال می کند
- بلند: صفحه وب سه چهارم صفحه را اشغال می کند
مثال
کد زیر یک URL باز با عمل مشاهده وب ارسال می کند. برای گزینههای قالببندی و مقدار، به OpenURLAction
مراجعه کنید.
CURL
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; }
یک رویداد تقویم ایجاد کنید
عمل ایجاد رویداد تقویم، برنامه تقویم کاربر را باز می کند و شروع به ایجاد یک رویداد جدید با اطلاعات مشخص شده می کند.
عنوان رویداد تقویم الزامی است. حداکثر 100 کاراکتر دارد. شرح رویداد تقویم اختیاری است و حداکثر 500 نویسه دارد.
مثال
کد زیر یک اقدام رویداد ایجاد تقویم را ارسال می کند. برای گزینههای قالببندی و مقدار، به CreateCalendarEventAction
مراجعه کنید.
CURL
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" } } } ] } }'
Node.js
// 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 );
لیست تراشه های پیشنهادی
نماینده شما لیست های تراشه های پیشنهادی را با پیام هایی برای هدایت اقدامات بعدی کاربران ارسال می کند. لیست تراشه فقط زمانی نمایش داده می شود که پیام مرتبط در پایین مکالمه باشد. هر پیام بعدی در مکالمه (از طرف کاربر یا نماینده شما) فهرست تراشه ها را بازنویسی می کند.
تراشه های موجود در لیست پاسخ های پیشنهادی و اقدامات پیشنهادی هستند.
لیست تراشه ها حداکثر شامل 11 تراشه پیشنهادی است و هر برچسب تراشه می تواند حداکثر 25 کاراکتر داشته باشد.
برای گزینه های قالب بندی و مقدار، AgentContentMessage
ببینید.
کارت های غنی
هنگامی که نیاز به ارسال تکه ای از اطلاعات، رسانه یا پیشنهادات مرتبط دارید، باید یک کارت غنی ارسال کنید. کارت های غنی به نماینده شما اجازه می دهند چندین واحد اطلاعات را در یک پیام ارسال کند.
کارت های غنی می توانند شامل موارد زیر باشند:
- یک تصویر یا ویدیو
- متن عنوان
- متن توضیحات
- پاسخهای پیشنهادی و اقدامات پیشنهادی (حداکثر 4)
یک کارت غنی میتواند شامل همه موارد فهرست شده باشد، اما یک کارت باید حداقل دارای یک تصویر، ویدیو یا عنوان باشد تا معتبر باشد. یک کارت غنی می تواند حداکثر شامل چهار اقدام پیشنهادی و پاسخ پیشنهادی باشد.
نماینده شما می تواند چندین کارت غنی را با هم در یک چرخ فلک کارت غنی ارسال کند.
حداکثر اندازه یک بار کارت غنی 250 کیلوبایت است. بهترین روشها را برای توصیهها و محدودیتهای اندازه فایل رسانه مشاهده کنید.
شما می توانید مشخصات کارت غنی را در کارت های غنی بیابید.
ارتفاع کارت
کارت ها به صورت عمودی گسترش می یابند تا با محتویاتشان مطابقت داشته باشند. کارت های ریچ دارای حداقل ارتفاع 112 DP و حداکثر ارتفاع 344 DP هستند. اگر محتویات کارت به اندازه کافی بزرگ نباشد که حداقل ارتفاع کارت را پر کند، کارت گسترش می یابد و ارتفاع اضافی را با فضای خالی پر می کند.
رسانه موجود در کارت های غنی باید یکی از سه ارتفاع را داشته باشد:
- کوتاه: 112 DP
- متوسط: 168 DP
- قد: 264 DP
اگر رسانه با ابعاد درون کارت با توجه به ارتفاع انتخاب شده مطابقت نداشته باشد، پیش نمایش رسانه با بزرگنمایی و برش رسانه انتخاب می شود.
مثال
کد زیر یک کارت غنی با یک تصویر و پاسخ های پیشنهادی ارسال می کند. برای گزینههای قالببندی و مقدار، به RichCard
مراجعه کنید.
CURL
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" } } ] } } } } }'
Node.js
// 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 پیدا کنید.
حداکثر اندازه یک بار کاروسل کارت غنی 250 کیلوبایت است. بهترین روشها را برای توصیهها و محدودیتهای اندازه فایل رسانه مشاهده کنید.
کوتاه کردن
مانند کارتهای غنی ، بسیاری از عوامل (مانند وضوح صفحه، تراکم پیکسل و ترجیحات کاربر) بر نحوه ظاهر کارتها برای کاربران نهایی تأثیر میگذارند. با این حال، در یک چرخ فلک، ارتفاع چند کارت اول ارتفاع همه کارتهای چرخ و فلک را مشخص میکند و ارتفاع کارت بر عنوان، توضیحات و برش پیشنهاد تأثیر میگذارد.
اگر دستگاهی به دلیل محدودیتهای نمایشگر یا ارتفاع کارت نتواند همه عناصر کارت را نمایش دهد، RBM کارت را تا زمانی که بتواند روی دستگاه نمایش داده شود، با استفاده از منطق زیر کوتاه میکند:
- توضیحات را به یک خط کاهش دهید.
- عنوان را به یک خط کاهش دهید.
- از انتهای لیست تعریف شده، پیشنهادهایی را که در کارت نمی گنجند حذف کنید.
- توضیحات را حذف کنید
- عنوان را حذف کنید
برای جلوگیری از کوتاه شدن، عناوین و توضیحات را تا حد امکان کوتاه نگه دارید. برای رسانه های بلند، از عنوان و توضیحات یا یک پیشنهاد استفاده کنید. برای رسانه های متوسط، حداکثر از دو پیشنهاد استفاده کنید. برای رسانه های کوتاه، حداکثر از سه پیشنهاد استفاده کنید. برای قرار دادن چهار پیشنهاد، رسانه را در کارت وارد نکنید.
کارتها را از نظر اندازه و طول محتوا تقریباً برابر نگه دارید، و در صورت لزوم، کارتهای بزرگتر را در چرخ و فلک قرار دهید تا از کوتاه شدن کارتهای بعدی جلوگیری شود.
مثال
کد زیر یک چرخ فلک کارت غنی را ارسال می کند. برای گزینههای قالببندی و مقدار، به RichCard
مراجعه کنید.
CURL
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/kitchen-sink-sample-images/cute-dog.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/kitchen-sink-sample-images/elephant.jpg", "forceRefresh": false } } } ] } } } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Images for the carousel cards let card1Image = 'https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg'; let card2Image = 'https://storage.googleapis.com/kitchen-sink-sample-images/elephant.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/kitchen-sink-sample-images/cute-dog.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/kitchen-sink-sample-images/elephant.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/kitchen-sink-sample-images/cute-dog.jpg'; card_image_2 = 'https://storage.googleapis.com/kitchen-sink-sample-images/elephant.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/kitchen-sink-sample-images/cute-dog.jpg"; string card2Image = "https://storage.googleapis.com/kitchen-sink-sample-images/elephant.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);