Google Chat uygulaması hızlı başlangıç kılavuzuna dayalı olanlar gibi Google Chat API etkileşim etkinliklerini kullanan bir Google Chat uygulaması oluşturup yayınladıysanız bu sayfada, uygulamayı Google Chat'i genişleten bir Google Workspace eklentisine nasıl dönüştüreceğiniz açıklanmaktadır.
Dönüştürme işlemiyle Google Chat uygulamanız, Google Workspace eklentileri çerçevesini kullanabilir. Bu sayede Google Chat'te ve Google Workspace'te entegrasyon ve özellikler için yeni olanaklar sunulur. Örneğin, Google Workspace Marketplace üzerinden tek bir Google Workspace eklentisi dağıtabilirsiniz. Bu eklenti, Chat uygulamalarını Gmail, Takvim ve Dokümanlar gibi diğer Google Workspace ana uygulamalarıyla birlikte kullanmanıza olanak tanır.
Sınırlamalar
Dönüşümü başlatmadan önce, Google Chat'i genişleten Google Workspace eklentilerinin sınırlamalarını inceleyerek Google Chat uygulamanızın temel işlevselliği kaybetmeden dönüştürülebileceğinden emin olun.
1. adım: Mevcut Google Chat uygulama kodunuzu kopyalayın
Dönüşüm işlemi için kod değişiklikleri yapılması gerekir. Yayındaki Google Chat uygulamanızın etkilenmemesi için kodunuzun bir kopyasını oluşturup bu kopya üzerinde çalışın.
Apps Komut Dosyası
- Mevcut Google Chat uygulaması Google Apps Komut Dosyası projenizi açın.
- Solda Genel bakış'ı tıklayın.
- Sağ tarafta Kopya oluştur'u tıklayın.
- Sol tarafta Proje Ayarları'nı tıklayın.
- Google Cloud projesi bölümünde Projeyi değiştir'i tıklayın.
- Mevcut Google Chat uygulaması projenizle ilişkili proje numarasını girin.
- Projeyi ayarla'yı tıklayın.
HTTP
Mevcut kod tabanınızın bir çatalını veya kopyasını oluşturup canlı Google Chat uygulamanızdan ayrı olarak yeni bir hizmet şeklinde dağıtın.
Uygulamanız Google Cloud'da dağıtılıyorsa ve Google Cloud projesine bağlı özelliklerden (ör. varsayılan App Engine kimliği) yararlanıyorsa yeni kod, mevcut Google Chat uygulama projesiyle ilişkili bir hizmete dağıtılmalıdır.
2. adım: Kopyalanan kodu değiştirin
Google Chat'in kullanımını genişleten Google Workspace eklentileri, Chat API etkileşim etkinlikleriyle oluşturulan Google Chat uygulamalarına kıyasla farklı istek ve yanıt yapıları kullanır. İstekler ve yanıtlar için Google Chat API'leri Event yerine Google Workspace eklentisini EventObject kullanmak üzere kodunuzu güncellemeniz gerekir.
Kodunuzu değiştirmek için Kod dönüştürme kılavuzunu kullanın.
3. adım: Test kullanıcıları için Google Workspace eklenti yapılandırmasını etkinleştirin
Google Chat uygulamanız için Google Workspace eklenti ayarlarını yapılandırmak üzere Google Cloud Console'u kullanın:
Google Cloud Console'da Google Chat API yapılandırma sayfasına gidin.
Etkileşimli Özellikler bölümünde Etkileşimli özellikleri etkinleştir'i açın.
Google Workspace eklentisine dönüştür bölümünde Eklentiye dönüştür'ü tıklayın.
Eklenti yapılandırma ayarlarını etkinleştir'i etkinleştirin.
Görünürlük bölümüne test kullanıcılarınızın e-posta adreslerini ekleyin.
Gerekirse Bağlantı Ayarları'nı, 2. adımda kopyaladığınız ve değiştirdiğiniz Google Chat uygulama kodunuzun dağıtım uç noktası URL'si veya Apps Komut Dosyası dağıtım kimliği ile güncelleyin.
Kaydet ve test et'i tıklayın.
4. adım: Dönüştürülen uygulamayı test edin
3. adımda yapılandırılan test kullanıcı hesaplarını kullanarak Google Workspace eklentisinin işlevselliğini kapsamlı bir şekilde test edin. Tüm özellikleri ve etkileşimleri doğrulayın.
5. adım: Dönüşümü tüm kullanıcılar için tamamlayın
Dönüştürülen Google Workspace eklentisinin doğru şekilde çalıştığını doğruladıktan sonra eklentiyi tüm kullanıcıların kullanımına sunabilirsiniz.
Google Cloud Console'da Google Chat API yapılandırma sayfasına gidin.
Etkileşimli Özellikler bölümünde Eklentiye dönüştür'ü tıklayın. Bir yan panel açılır.
Yan panelde Eklentiye dönüştür'ü tıklayın.
Proje kimliğinizi yazın ve Dönüştür'ü tıklayın.
Google Chat uygulamanız artık Google Chat'i genişleten bir Google Workspace eklentisidir.
İsteğe bağlı: Kullanılmayan Google Cloud kaynaklarını temizleme veya boşaltma
İsteğe bağlı olarak, Google Chat uygulamanızı Google Workspace eklentisine dönüştürdükten sonra, artık kullanılmayan Google Chat uygulaması tarafından kullanılan kaynaklar için Google Cloud hesabınıza ücret yansıtılmaması amacıyla bu kaynakları devre dışı bırakabilirsiniz.
Kod dönüştürme kılavuzu
Bu bölümde, Google Chat API etkileşimi Event biçimi ile Google Workspace eklentisi EventObject biçimi arasındaki eşleme ayrıntılı olarak açıklanmaktadır.
İstek eşleme
Aşağıdaki tabloda, Google Chat API'deki alanların
Event
Google Workspace eklentisindeki karşılık gelen alanlarla nasıl eşlendiği gösterilmektedir
EventObject.
Google Chat API etkileşimi Event alanı |
Google Workspace eklentisi EventObject alanı |
Notlar |
|---|---|---|
action.actionMethodName |
Yok | Kart etkileşimlerinde yöntem adı, commonEventObject.parameters içinde parametre olarak iletilebilir. İlk iletişim kutusunu açma başlıklı makaleyi inceleyin. |
action.parameters |
commonEventObject.parameters |
|
appCommandMetadata |
chat.appCommandPayload.appCommandMetadata |
|
common |
commonEventObject |
|
configCompleteRedirectUrl |
|
Etkinlik türüne bağlı olarak farklı yüklerde kullanılabilir. |
dialogEventType |
|
Etkinlik türüne bağlı olarak farklı yüklerde kullanılabilir. |
eventTime |
chat.eventTime |
|
isDialogEvent |
|
Etkinlik türüne bağlı olarak farklı yüklerde kullanılabilir. |
message |
|
Etkinlik türüne bağlı olarak farklı yüklerde kullanılabilir. |
space |
|
|
thread |
|
Etkinlik türüne bağlı olarak farklı yüklerde kullanılabilir. |
threadKey |
|
Etkinlik türüne bağlı olarak farklı yüklerde kullanılabilir. |
token |
Yok | Doğrulama farklı şekilde yapılır. HTTP Uygulamaları İçin Doğrulama İsteği başlıklı makaleyi inceleyin. |
type |
Yok | Etkinlik türü, tetikleyiciden anlaşılabilir. |
user |
chat.user |
Kullanım alanına göre eşleme isteğinde bulunma
Aşağıdaki tabloda, Chat API etkileşim etkinlikleriyle oluşturulan Google Chat uygulamaları ile Google Chat'i genişleten Google Workspace eklentileri arasındaki yaygın kullanım alanlarına yönelik istek yüklerindeki farklılıklar gösterilmektedir.
| Kullanım Örneği | Chat API etkileşimi Event Yük |
Google Workspace eklentisi EventObject yükü |
|---|---|---|
| Uygulama alana eklendi | { "type": "ADDED_TO_SPACE", "space": { ... } } |
{ "chat": { "addedToSpacePayload": { "space": { ... } } } } |
| Uygulamayı alandan kaldırma | { "type": "REMOVED_FROM_SPACE", "space": { ... } } |
{ "chat": { "removedFromSpacePayload": { "space": { ... } } } } |
| Kullanıcı bir uygulamadan @bahsederse | { "type": "MESSAGE", "message": { ... }, "space": { ... }, "configCompleteRedirectUrl": "..." } |
{ "chat": { "messagePayload": { "message": { ... }, "space": { ... }, "configCompleteRedirectUri": "..." } } } |
| Kullanıcı, uygulamayı alana eklemek için @-bahseder. | Google Chat'ten gelen bir isteği yanıtlamanız gerekir:{ "type": "ADDED_TO_SPACE", "space": { ... }, "message": { ... } } |
Google Chat'ten gelen iki isteği ele almanız gerekir. İlk istek: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } İkinci istek: { "chat": { "messagePayload": { "message": { ... }, "space": { ... } } } } |
| Eğik çizgi komutu | { "type": "MESSAGE", "message": { "slashCommand": { ... } }, "space": { ... } } |
{ "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Alana uygulama eklemek için kullanılan eğik çizgi komutu | Google Chat'ten gelen bir isteği yanıtlamanız gerekir:{ "type": "ADDED_TO_SPACE", "space": { ... }, "message": { "slashCommand": { ... } } } |
Google Chat'ten gelen iki isteği ele almanız gerekir. İlk istek: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } İkinci istek: { "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Kullanıcı, kart veya iletişim kutusundaki bir düğmeyi tıkladığında | { "type": "CARD_CLICKED", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } İletişim kutusu etkinliklerinde { "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }} } } }, "space": { ... }, "message": { ... }, "isDialogEvent": true, "dialogEventType": "..." } |
{ "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } } } İletişim kutusu etkinliklerinde { "commonEventObject": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] } } } }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "true", "dialogEventType": "..." } } } |
| Kullanıcı, uygulama ana sayfası kartında bilgi gönderdiğinde | { "type": "SUBMIT_FORM", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } |
{ "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "SUBMIT_DIALOG" } } } |
| Kullanıcı, hızlı komut kullanarak bir uygulama komutu çağırır. | { "type": "APP_COMMAND", "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } |
{ "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Bağlantı önizleme | { "type": "MESSAGE", "message": { "matchedUrl": "..." }, "space": { ... } } |
{ "chat": { "messagePayload": { "message": { "matchedUrl": "..." }, "space": { ... } } } } |
| Kullanıcı, kart mesajında veya iletişim kutusunda bir widget'ı güncellediğinde | { "type": "WIDGET_UPDATED", "space": { ... }, "common": { ... } } |
{ "commonEventObject": { ... }, "chat": { "widgetUpdatedPayload": { "space": { ... } } } } |
Kullanım alanına göre yanıt eşleme
Google Chat'i genişleten Google Workspace eklentileri, Message nesnesi yerine işlemler döndürür. Aşağıdaki tabloda, Google Chat API Message yanıt türleri ile bunların Google Workspace eklentisi işlem karşılıkları eşlenmiştir.
| Kullanım Örneği | Google Chat API Message Yanıtı |
Google Workspace eklentisi Chat işlemi yanıtı |
|---|---|---|
| Çağrılan alanda mesaj oluşturma | { "actionResponse": { "type": "NEW_MESSAGE" }, "text": "..." }
|
{ "hostAppDataAction": { "chatDataAction": { "createMessageAction": { "message": { "text": "..." } } } } } Daha fazla bilgi için Mesaj gönderme başlıklı makaleyi inceleyin. |
| Mesaj güncelleme | { "actionResponse": { "type": "UPDATE_MESSAGE" }, "text": "..." } Daha fazla bilgi için Mesajı güncelleme (Chat) başlıklı makaleyi inceleyin. |
{ "hostAppDataAction": { "chatDataAction": { "updateMessageAction": { "message": { "text": "..." } } } } } Daha fazla bilgi edinmek için Mesajı güncelleme (eklentiler) başlıklı makaleyi inceleyin. |
| Bağlantı önizleme | { "actionResponse": { "type": "UPDATE_USER_MESSAGE_CARDS" }, "cardsV2": [{ ... }] } Daha fazla bilgi edinmek için Bağlantıyı önizleme (Chat) başlıklı makaleyi inceleyin. |
{ "hostAppDataAction": { "chatDataAction": { "updateInlinePreviewAction": { "cardsV2": [{ ... }] } } } } Daha fazla bilgi edinmek için Bağlantıyı önizleme(eklentiler) başlıklı makaleyi inceleyin. |
| İlk iletişim kutusunu açma | { "actionResponse": { "type": "DIALOG", "dialogAction": { "dialog": { "body": { /* Card object */ } } } } } Daha fazla bilgi edinmek için İletişim kutusu açma (Chat) başlıklı makaleyi inceleyin. |
{ "action": { "navigations": [{ "pushCard": { /* Card object */ } }] } } Gönderdiğiniz kart, onClick işlemleri içeren widget'lar içerebilir. HTTP Google Workspace eklentileri için aşağıdaki işlemleri bir işlev uç noktasını çağıracak şekilde yapılandırın: { "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "clickedButton", "value": "submit" }] } } } Daha fazla bilgi edinmek için İletişim kutusu açma (eklentiler) başlıklı makaleyi inceleyin. |
| İletişim kutusunu kapatma | { "actionResponse": { "type": "DIALOG", "dialogAction": { "actionStatus": { "userFacingMessage": "..." } } } } Daha fazla bilgi edinmek için İletişim kutusunu kapatma (Chat) başlıklı makaleyi inceleyin. |
{ "action": { "navigations": [{ "endNavigation": "CLOSE_DIALOG" }], "notification": { "text": "..."} } } Daha fazla bilgi için İletişim kutusunu kapatma (eklentiler) başlıklı makaleyi inceleyin. |
| Harici bir sisteme bağlanma (Yapılandırma isteği) | { "actionResponse": { "type": "REQUEST_CONFIG", "url": "..." } } Daha fazla bilgi için Harici bir sisteme bağlanma başlıklı makaleyi inceleyin. |
{ "basic_authorization_prompt": { "authorization_url": "...", "resource": "..." } } Daha fazla bilgi için Google Workspace eklentinizi üçüncü taraf hizmetine bağlama başlıklı makaleyi inceleyin. |
| Etkileşimli widget'larda öğeleri otomatik tamamlama | { "actionResponse": { "type": "UPDATE_WIDGET", "updatedWidget": { "suggestions": { "items": ["..."] }, "widget": "widget_id" } } } Daha fazla bilgi edinmek için Çoklu seçim menüsü ekleme başlıklı makaleyi inceleyin. |
{ "action": { "modifyOperations": [{ "updateWidget": { "widgetId": "widget_id", "selectionInputWidgetSuggestions": { "suggestions": ["..."] } } }] } } Daha fazla bilgi edinmek için Google Chat kullanıcılarından bilgi toplama ve bu bilgileri işleme başlıklı makaleyi inceleyin. |
Dönüşümden önce oluşturulan mesajlardaki kart etkileşimlerini yönetme
Bir HTTP Google Chat uygulamasını Google Workspace eklentisine dönüştürdüğünüzde, dönüştürme işleminden önce oluşturulan iletilerdeki kart etkileşimleri özel işlem gerektirir. Eklentiler, kartın action.function için tam bir HTTP URL'si kullanırken Google Chat API etkileşim etkinlikleriyle oluşturulan Chat uygulamaları bir işlev adı kullanır. Aşağıdaki tabloda bu farklılıklar özetlenmektedir.
| Google Chat API etkileşim etkinlikleriyle oluşturulan Google Chat uygulaması | Google Chat'i genişleten Google Workspace eklentisi | |
|---|---|---|
| Yapılandırma | Google Cloud Console'da tüm etkinlikler için tek bir uç nokta yapılandırabilirsiniz. Kart etkileşimleri uygulanırken bir kartın action yalnızca yürütülecek işlevin adını içerir. Kart tıklama etkinlikleri için ortak HTTP uç noktası çağrılır.
Daha fazla bilgi edinmek için İletişim kutusu açma (Chat) başlıklı makaleyi inceleyin. { "onClick": { "action": { "function": "submit" } } } |
Google Cloud Console'da etkinlik başına uç noktaları isteğe bağlı olarak yapılandırabilirsiniz ancak bu, kart tıklama etkinliklerini içermez. Kart etkileşimleri uygulanırken bir kartın action alanı, çağrılacak HTTP uç noktasının tam URL'sini içermelidir. Düğme başına benzersiz bir HTTP uç noktası ayarlayabilir veya ortak bir uç nokta kullanıp işlemi action.parameters içinde parametre olarak iletebilirsiniz.
Daha fazla bilgi edinmek için İletişim kutusu açma (eklentiler) başlıklı makaleyi inceleyin. { "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "method", "value": "submit" }] } } } |
Dönüşümden önce oluşturulan mesajlarda kart etkileşimlerinin çalışır durumda olmasını sağlamak için Google Chat API yapılandırma sayfasında bir Kart Etkileşimi URL'si yapılandırın.
Bu URL yalnızca uygulamanızı dönüştürmeden önce oluşturulan mesajlardaki etkileşimler için kullanılır. Bir kullanıcı bu mesajlardan biriyle etkileşimde bulunduğunda orijinal action.function değeri, __action_method_name__ adlı bir parametre olarak iletilir.
Örnek: Kart tıklaması
Kart Etkileşimi URL'sini https://.../card-interaction-handler olarak yapılandırdıysanız ve bir kullanıcı, aşağıdaki işlemle birlikte geçmiş bir iletideki bir kartı tıklarsa:
{
"onClick": {
"action": {
"function": "submit"
}
}
}
Bir etkinlik, yapılandırılmış Kart Etkileşimi URL'nize aşağıdaki biçimde iletilir:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "submit"
}
},
"chat": {
"buttonClickedPayload": { ... }
}
}
Örnek: Çoklu seçim menüsü
Bir kullanıcı, harici veri kaynağı içeren çoklu seçim menüsüyle etkileşim kurarsa:
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"externalDataSource": {
"function": "getContacts"
}
}
}
Bir etkinlik, yapılandırılmış Kart Etkileşimi URL'nize aşağıdaki biçimde iletilir:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "getContacts",
}
},
"chat": {
"widgetUpdatedPayload": { ... }
}
}
HTTP tetikleyicileriniz için Tüm tetikleyicilerde ortak HTTP uç noktası URL'si kullan seçeneğini etkinleştirirseniz ortak URL, Düğme Tıklandı etkinlikleri için de kullanılır.
Chat'i genişleten HTTP Google Workspace eklentileri için istekleri doğrulama
HTTP tabanlı Google Chat uygulamalarında, isteklerin Google'dan geldiğini doğrulama mantığı, Google Workspace eklentisine dönüştürülürken güncellenmelidir.
- Google Chat API etkileşim etkinliği HTTP Google Chat uygulaması doğrulaması: Google Chat'ten gelen istekleri doğrulama
- Google Workspace eklentisi HTTP doğrulaması: Google'dan gelen istekleri doğrulama
İstek doğrulama ile ilgili temel farklar şunlardır:
| Uygulama Türü | Desteklenen Kitle | Hizmet Hesabı E-postası |
|---|---|---|
| Google Chat API etkileşim etkinlikleriyle oluşturulan Google Chat uygulaması | Proje numarası | chat@system.gserviceaccount.com |
| Google Chat'i genişleten Google Workspace eklentisi | Yalnızca HTTP uç noktası | Proje başına hizmet hesabı e-posta adresi |
Google Workspace eklentinizin benzersiz hizmet hesabı e-posta adresini, Google Cloud Console'daki Google Chat API yapılandırma sayfasının Google Workspace eklentilerine dönüştür bölümünde bulabilirsiniz.
Yükseltilmiş Google Workspace eklentinizdeki istekleri doğrulamak için:
- Cloud Run işlevlerini kullanıyorsanız eklenti başına hizmet hesabına
roles/cloudfunctions.invokerrolünü verin. IAM ile erişimi yetkilendirme başlıklı makaleyi inceleyin. - Taşıyıcı jetonun imzasını doğrulamak için jeton doğrulama kodunuzu Google Workspace eklenti hizmeti hesabı e-posta adresini kullanacak şekilde güncelleyin. Google'dan gelen istekleri doğrulama başlıklı makaleyi inceleyin.