Etkinlikler, temsilcinizin gönderebileceği ve alabileceği bildirimlerdir. Üç tür etkinlik vardır:
- Sunucu tarafından oluşturulan: RBM platformu tarafından temsilcinize gönderilir.
- Kullanıcı tarafından oluşturulan: Kullanıcının cihazı tarafından aracınıza gönderilir.
- Temsilci tarafından oluşturulan: Temsilciniz tarafından kullanıcıya gönderilir.
Sunucu tarafından oluşturulan etkinlikler
RBM platformu, temsilcinizi mesajların süresinin dolması gibi sunucu düzeyindeki güncellemeler hakkında bilgilendirmek için etkinlikler gönderir.
Biçimlendirme ve değer seçenekleri için ServerEvent bölümüne bakın.
Temsilci başlatma durumu değişti
RBM platformu, temsilcinizin kullanıma sunma durumuyla ilgili her değişiklik için AgentLaunchEvent gönderir. Örneğin, operatör onayı sonrasında temsilcinizin durumu PENDING'dan LAUNCHED'ye değiştiğinde, değişikliği belirtmek için AgentLaunchEvent etkinliği alırsınız. Bu etkinlikler, tüm operatör lansman durumu değişiklikleri için tüm RBM aracılarına gönderilir.
Webhook yapılandırması
Bu bildirimleri almak için iş ortağı düzeyinde veya temsilci düzeyinde webhook'unuzu kullanabilirsiniz.
Ön koşullar
- RBM mesajlaşması için webhook'unuzu yapılandırın (Bu, kullanıcı mesajlarını ve kullanıcı tarafından oluşturulan etkinlikleri almak için gereklidir).
- Kullanıcı tarafından oluşturulan etkinlikler ile aracı başlatma durumu etkinliklerini ayırt etmek için
message.attributes.typeyolundaagent_launch_eventdeğerini kontrol edin.
Etkinlik yükü yapısı
AgentLaunchEvent, Pub/Sub mesajı olarak iletilir. Aşağıda bununla ilgili bir örnek verilmiştir:
{
"message": {
"attributes": {
"business_id": "rbm-chatbot-id@rbm.goog",
"event_type": "REJECTED",
"product": "RBM",
"project_number": "3338881441851",
"type": "agent_launch_event"
},
"data": "....BASE64-encoded-JSON-with-notification...",
"messageId": "14150481888479752",
"message_id": "14150481888479752",
"publishTime": "2025-03-05T18:50:21.88Z",
"publish_time": "2025-03-05T18:50:21.88Z"
},
"subscription": "projects/rbm-partner-gcp/subscriptions/rbm-sub"
}
Etkinlik yükündeki AgentLaunchEvent.LaunchState alanı, aracının yeni başlatma durumunu gösterir.
Olası değerler şunlardır:
| Değer | Temsilci başlatma durumu | Ayrıntılar |
|---|---|---|
UNLAUNCHED |
Başlatılmamış | Düzenlemeye izin verilmektedir. |
PENDING |
Beklemede | Talep incelenmek üzere bir taşıyıcıya gönderildi. |
LAUNCHED |
Başlatıldı | Mesajlara belirli bir operatör üzerinden izin verilir. |
REJECTED |
Belirli bir taşıyıcıda reddedildi | Reddedilme nedeni yorumda belirtilmiştir. |
SUSPENDED |
Belirli bir operatörde askıya alınmış | Askıya alınma nedeni yorumda belirtilmiştir. |
Veri alanı, başlatma durumu ayrıntılarını içeren Base64 kodlu bir JSON nesnesi içerir. İşte çözülmüş JSON'un bir örneği:
{
"eventId": "rbm-chatbot-id/0a7ed168-676e-4a56-b422-b23434",
"agentId": "rbm-chatbot-id@rbm.goog",
"botDisplayName": "RBM Welcome Bot 7 - RBM Chatbot name",
"brandId": "bd38fbff-392a-437b-a6f2-7f2e43745b56",
"brandDisplayName": "Chatbots brand",
"regionId": "/v1/regions/fi-rcs",
"oldLaunchState": "PENDING",
"newLaunchState": "REJECTED",
"actingParty": "rbm-support@google.com",
"comment": "Carrier has rejected the launch: policy violation",
"sendTime": "2025-03-05T18:50:19.386436Z"
}
Aşağıdaki tabloda aracı başlatma durumları ve bunları tetikleyen eylemler gösterilmektedir:
| Eski başlatma durumu | Yeni başlatma durumu | Değişimin tetikleyicisi |
|---|---|---|
PENDING |
LAUNCHED |
Temsilci onayı bekleniyor. |
PENDING |
REJECTED |
Bekleyen temsilci reddedildi. |
LAUNCHED |
SUSPENDED |
Başlatılan ajan askıya alındı. |
SUSPENDED |
LAUNCHED |
Askıya alınan ajan yeniden etkinleştirildi. |
SUSPENDED |
TERMINATED |
Askıya alınmış temsilci sonlandırıldı. |
TERMINATED |
LAUNCHED |
Sonlandırılan ajan başlatıldı. |
Mesajın süresi doldu; iptal işlemi başarılı oldu
Mesajın süresi doldu ve başarıyla iptal edildi. Bu olay, geri dönüş mesajlaşma stratejiniz için iyi bir tetikleyici olacaktır.
{ "phoneNumber": [phone number of recipient that the original message was intended for] , "messageId": [RCS message ID of the message], "agentId": [bot ID], "eventType": "TTL_EXPIRATION_REVOKED", "eventId": [unique ID generated by the RBM platform], "sendTime": [time at which the server sent this event] }
Mesajın süresi doldu; iptal başarısız oldu
Mesajın süresi doldu ancak iptal edilmedi.
{ "phoneNumber": [phone number of recipient that the original message was intended for] , "messageId": [RCS message ID of the message], "agentId": [bot ID], "eventType": "TTL_EXPIRATION_REVOKE_FAILED", "eventId": [unique ID generated by the RBM platform], "sendTime": [time at which the server sent this event] }
İletinin teslim edileceği garanti edilmez.
- Mesaj iletildiyse, webhook'unuzda bir
DELIVEREDolayı alacaksınız. - İleti teslim edilmediyse iptal isteği göndermek için iptal API'sini kullanın.
Mesaj zamana duyarlıysa (ör. tek kullanımlık şifre veya sahtekarlık uyarısı) kullanıcıya yinelenen mesajlar gönderilse bile mesajı SMS gibi alternatif bir kanal üzerinden göndermek en iyisidir.
Kullanıcı tarafından oluşturulan etkinlikler
Kullanıcı mesajlarında ve yetenek kontrollerinde olduğu gibi, temsilciniz kullanıcı etkinliklerini JSON olarak alır.
Biçimlendirme ve değer seçenekleri için UserEvent bölümüne bakın.
Kullanıcı, temsilci mesajını alır
Bu etkinlik, bir iletinin teslim edildiğini gösterir.
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "DELIVERED",
"eventId": "EVENT_ID",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID"
}Kullanıcı, temsilci mesajını okur
Bu etkinlik, bir iletinin açıldığını veya onaylandığını gösterir.
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "READ",
"eventId": "EVENT_ID",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID"
}Kullanıcı yazmaya başladığında
Bu etkinlik, kullanıcının yazdığını gösterir.
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "IS_TYPING",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}Kullanıcı kısa mesaj gönderir
{
"senderPhoneNumber": "PHONE_NUMBER",
"text": "Hi",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}Kullanıcı dosya gönderir
{ "senderPhoneNumber": "PHONE_NUMBER", "userFile": { "payload": { "mimeType": "image/gif", "fileSizeBytes": 127806, "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9", "fileName": "4_animated.gif" } }, "eventId": "EVENT_ID", "agentId": "AGENT_ID" }
Kullanıcı, önerilen bir yanıta dokunur.
Kullanıcı, önerilen bir yanıta dokunduğunda temsilciniz, yanıtın geri gönderme verileri ve metniyle birlikte bir etkinlik alır.
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID",
"suggestionResponse": {
"postbackData": "postback_1234",
"text": "Hello there!"
}
}Kullanıcı, önerilen bir işleme dokunur.
Kullanıcı, önerilen bir işleme dokunduğunda aracınız, işlemin geri gönderme verilerini içeren bir etkinlik alır.
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID",
"suggestionResponse": {
"postbackData": "postback_1234"
}
}Kullanıcı, ileti dizisinin e-posta listesinden çıkarılırsa
Bir kullanıcı, işletmelerden gerekli olmayan mesajlar (ör. promosyonlar) almak istemiyorsa Google Mesajlar'da RBM görüşmesinin aboneliğinden çıkabilir.
UNSUBSCRIBE etkinliği, kullanıcının temsilcinizle ve temsil ettiği işletmeyle olan görüşme aboneliğini iptal ettiğini gösterir. JSON yükü örneğini aşağıda bulabilirsiniz:
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "UNSUBSCRIBE",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}İşleyiş şekli
- Sohbet menüsünde her zaman E-posta listesinden çık seçeneği bulunur. Tanıtım amaçlı ve çok kullanımlı temsilciler için bu seçenek, belirli sayıda okunmamış mesajdan sonra doğrudan sohbette de gösterilir (ülkeye göre farklı kurallar geçerlidir).
Abonelikten çık'ı seçtiğinizde iki işlem aynı anda tetiklenir: Google Mesajlar, temsilcinize ülkeye özgü bir anahtar kelime (örneğin, "DUR") gönderir ve RBM platformu, webhook'unuza bir UNSUBSCRIBE etkinliği gönderir.
Anahtar kelime, kullanıcının telefon numarasının iki harfli ülke koduna göre belirlenir. Aşağıdaki tabloda desteklenen her ülke için anahtar kelimeler listelenmiştir.
Ülke (ülke kodu) Abonelikten çıkma anahtar kelimesi Amerika Birleşik Devletleri (ABD), Hindistan (IN), Birleşik Krallık (GB), Almanya (DE) DURDUR İspanya (ES), Meksika (MX) BAJA Fransa (FR) DURDUR Brezilya (BR) parar Kullanıcı aboneliğini iptal ettikten sonra, spam olarak bildirilmediği sürece konuşma gelen kutusunda kalır; spam olarak bildirilirse Spam ve engellenen klasörüne taşınır.
Google, politika ve iş kuralı ihlallerini tespit etmek için bir kullanıcının aboneliğini iptal etmesinin ardından mesaj modellerini izler.
İş kuralları
- Bu görüşmeyi yöneten RBM iş ortağı olarak, kullanıcının e-posta listesinden çıkma isteğine uymak sizin sorumluluğunuzdadır.
- Abonelikten çıkma işlemini mesaj dizisi içinde gerçekleştiremiyorsanız, kullanıcıların abonelik tercihlerini yönetebilecekleri web sitesine veya uygulamaya doğrudan bağlantı içeren bir onay mesajını hemen göndermelisiniz.
- Kullanıcının aboneliğinden çıkması sonrasında, zorunlu olmayan mesajların gönderilmesi yasaktır.
- Temel mesajlara hala izin veriliyor. Bunlar şunları içerir:
- Tek kullanımlık şifreler (OTP'ler) gibi kimlik doğrulamalar
- Kullanıcının talep ettiği ve onay verdiği belirli bir hizmete ilişkin bildirimler
- Kullanıcının e-posta listesinden çıkma isteğinin onaylandığına dair mesaj ve iletişim tercihlerini daha ayrıntılı yönetebileceği bilgiler
Örnek
Bir kullanıcı, kullanım durumu çoklu kullanım olan bir havayolu acentesinden aboneliğini iptal ederse, pazarlama mesajları göndermeyi durdurmalısınız. Ancak, kullanıcı belirli bir uçuş için güncelleme almayı açıkça kabul etmişse, uçuş güncellemeleri gönderebilirsiniz.
Abonelikten çıkma nedenleri
Bir kullanıcı aracınızdan aboneliğini iptal ettiğinde, aşağıdaki seçeneklerden birini seçebilir:
- Kaydolunmadı
- Çok sayıda mesaj
- Artık ilgimi çekmiyor
- Spam
- Diğer
Şu anda abonelikten çıkma nedenleri iş ortaklarımız veya operatörlerimizle paylaşılmıyor.
Kullanıcı sohbete yeniden abone olur
Kullanıcılar, Google Mesajlar'da daha önce aboneliğini iptal ettikleri bir sohbete yeniden abone olabilirler.
SUBSCRIBE etkinliği, kullanıcının promosyonlar gibi gerekli olmayan içerikler de dahil olmak üzere aracınızdan mesaj almak istediğini gösterir. JSON yükü örneğini aşağıda bulabilirsiniz:
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "SUBSCRIBE",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}İşleyiş şekli
- Hem sohbet menüsünden hem de sohbet içi bağlantıdan erişilebilen Abone Ol seçeneği, kullanıcıların aboneliğini iptal ettikleri bir sohbete yeniden abone olmalarını sağlar.
Abone Ol'u seçmek iki eş zamanlı eylemi tetikler: Google Mesajlar temsilcinize ülkeye özgü bir anahtar kelime (örneğin, "BAŞLAT") gönderir ve RBM platformu webhook'unuza bir ABONE OL olayı gönderir.
Belirli anahtar kelime, kullanıcının telefon numarasının iki harfli ülke koduna göre belirlenir. Aşağıdaki tabloda desteklenen her ülke için anahtar kelimeler listelenmiştir.
Ülke (ülke kodu) Abonelik anahtar kelimesi Amerika Birleşik Devletleri (ABD), Hindistan (IN), Birleşik Krallık (GB), Almanya (DE) BAŞLAT İspanya (ES), Meksika (MX) ALTA Fransa (FR) Başlangıç Brezilya (BR) começar
İş kuralları
- Bu görüşmeyi yöneten RBM ortağı olarak, kullanıcının yeniden abone olma isteğini yerine getirmek sizin sorumluluğunuzdadır.
- Yeniden abonelik, promosyonlar gibi temel olmayan içerikler de dahil olmak üzere tüm mesaj türleri için geçerlidir.
- Bir kullanıcı aboneliğini iptal ettikten sonra işletmenize mesaj gönderirse bu bir yeniden abonelik talebi olarak değerlendirilebilir.
- Bir kullanıcı mesajlaşma kanalının dışında (örneğin, web sitenizde) yeniden abone olursa, durumunu güncellemek ve buna göre mesaj göndermeye devam etmek RBM iş ortağı olarak sizin sorumluluğunuzdadır.
Aracı tarafından oluşturulan olaylar
Temsilciniz, insan etkileşimlerini simüle etmek ve kullanıcıya temsilcinizin mesajlarıyla etkileşimde bulunduğundan emin olmak için olaylar gönderir. Kullanıcılar için etkinlikler, konuşmaları içerisinde bildirim olarak görüntülenir.
Biçimlendirme ve değer seçenekleri için phones.agentEvents konusuna bakın.
Aracı bir READ olayı gönderir
Kullanıcılara bu olay, belirli bir mesajın okundu bilgisi olarak görünür. Kullanıcıya RBM platformunun mesajını ilettiğini ve aracının bunu işlediğini bildirir.
Aşağıdaki kod, messageId ile eşleşen bir mesaj için READ olayı gönderir.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_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 "{ 'eventType': 'READ', 'messageId': 'MESSAGE_ID' }"
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Send the device an event to indicate that messageId has been read rbmApiHelper.sendReadMessage('+12223334444', messageId);
Java
import com.google.rbm.RbmApiHelper; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Send the device an event to indicate that messageId has been read rbmApiHelper.sendReadMessage(messageId, "+12223334444");
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service # Send the device an event to indicate that message_id was read rbm_service.send_read_event('+12223334444', message_id)
C#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Send the device an event to indicate that messageId has been read rbmApiHelper.SendReadMessage(messageId, "+12223334444");
Aracı bir IS_TYPING olayı gönderir
Bu etkinlik, kullanıcılara yazma göstergesi olarak görünür ve temsilcinizin bir mesaj yazdığını bildirir. Yazma göstergesi kısa bir süre sonra (yaklaşık 20 saniye) veya kullanıcının cihazı temsilcinizden yeni bir mesaj aldığında sona erer. Aracılarınız, yazma göstergesinin geçerlilik süresi zamanlayıcısını sıfırlamak için birden fazla IS_TYPING etkinliği gönderebilir.
Aşağıdaki kod, bir IS_TYPING etkinliği gönderir.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_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 "{ 'eventType': 'IS_TYPING', }"
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Send the device an event to indicate that the agent is typing rbmApiHelper.sendIsTypingMessage('+12223334444', function() { console.log('Typing event sent!'); });
Java
import com.google.rbm.RbmApiHelper; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Send the device an event to indicate that the agent is typing rbmApiHelper.sendIsTypingMessage("+12223334444");
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service # Send the device an event to indicate that the agent is typing rbm_service.send_is_typing_event('+12223334444')
C#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Send the device an event to indicate that the agent is typing rbmApiHelper.SendIsTypingMessage(messageId, "+12223334444");