REST API'yi kullanarak Google Sohbet'e mesaj gönderin (Google örneği 2020'de çalışmıyor)
Nereden başlayayım ... (Google, neden beni bu şekilde incitmen gerekiyor?)
Arkaplan bilgisi
Yeni bir chatbot oluşturduk Google Apps Komutu kullanılarak kullanıcılardan mesajları aldığı, Google Sohbet ve yanıt eşzamanlı tek mesajla (her mesajı sadece chatbot dan fazla yanıt olabilir).
Şimdi, asenkron mesajlar göndermenin bir yoluna ihtiyacım var, böylece bot kendi başına mesaj gönderebilir veya bir seferde birden fazla ayrı yanıt gönderebilir.
Sorun
Google Sohbet REST API için bir yöntem olan uyumsuz bir mesaj oluşturmak , ancak bu yöntem ( spaces.messages.create
) çalışma değil! 2020'den itibaren bu yöntemin çalışan örnekleri yoktur.
REST API kullanarak bir mesaj oluşturmak için Google'ın örnek kodu .
Sorun şu ki, örneklerinde, artık çıkmayan bir URL'yeSCOPE
ayarlanmış :
var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
Bu URL'ye giderseniz, şu 404 hatasını görürsünüz:
Not Found
Error 404
Ayrıca, mevcut OAuth2 kapsamlarının listesini kontrol ederseniz, Hangouts veya Chat ile ilgili kapsamların olmadığını chat.bot
ve örnek kodda kullanılan kapsamdan söz edilmediğini fark edeceksiniz .
Ne denedim
StackOverflow'daki bu Chat API ile ilgili her soruyu ve ayrıca REST API için her öğreticiyi okudum.
- Google'ın resmi Apps Komut Dosyası eğiticisi,
chat.bot
kapsam artık mevcut olmadığından çalışmıyor:- Apps Komut Dosyasını kullanan Eşzamansız Mesajlar
- Bu StackOverflow çözümlerinin tümü, var olmayan aynı
chat.bot
kapsamı kullanır:- Olay olmadan özel mesaj gönder
- Rest API kullanarak yeni Hangout Chat'te eşzamansız olarak yanıt verin
- Apps Komut Dosyası Botunda 404 kesilmiş sunucu yanıtı
- Bu StackOverflow kullanıcısı
chat
kapsamı (iegoogleapis.com/auth/chat
) kullanabildiklerini söylüyor , ancak bu kapsam da mevcut değil:- Hata 400: invalid_scope
Sonuç olarak
Nasıl mesaj göndermek için gelen Google Apps Komutu için kullanarak Google Sohbet Google Sohbet DİNLENME API ?
Görünüşe göre Google'ın belgeleri güncel değil ve bu API için hiçbir örnek Ağustos 2020 itibarıyla çalışmıyor. Ya REST API'lerinin çalışmadığının farkında değiller ya da kimseye söylemeden REST API'yi kullanımdan kaldırmışlar.
Yanıtlar
Cevap:
chat.bot
Kapsamın gerçekten var olduğunu doğrulayabilirim . REST API ile sohbet bot kurmak için gereken bir kullanmak hizmet hesabı .
Daha fazla bilgi:
Tetikleyicide eşzamansız mesajlar göndermek için Apps Komut Dosyası ile bot geliştirme konusunda bağladığınız belgelere göre :
... bunu başarmanın şu anda tek yolu harici HTTP API'sidir ( belgelere bakın ). Bu, Apps Komut Dosyası kitaplığı için OAuth2 aracılığıyla bir Bulut hizmeti hesabının (belgelere bakın) kullanılmasını gerektirir .
Bu, chat.bot
kapsamın bu mesajlar için kullanılabilmesi için önce GCP konsolunda bir hizmet hesabı oluşturmanız gerektiği anlamına gelir . Tüm süreç, başlatılmamış kişiler için oldukça zor olabilir, bu yüzden burada baştan sona kadar olan adımları sağlayacağım.
Süreç:
Bir Hizmet Hesabı Oluşturma:
- Google Cloud Console'a gidin ve yeni bir GCP Projesi oluşturun. Hit
Select a project
sayfanın üst kısmındaki tıklamanızNEW PROJECT
.- Bir sağlamanız gerekecek
Project name
, diğer alanlar sizin için otomatik olarak doldurulmalıdır.
- Bir sağlamanız gerekecek
- Basın
CREATE
- ekranın sağ üst köşesinde yeni bir projenin oluşturulduğunu onaylayan yeni bir açılır pencere görünecektir. Yüklendikten sonra tıklayabilirsinizVIEW
. ☰
Sol üstteki simgeye tıklayın veAPIs & Services > Credentials
menü öğesini izleyin .- Bu sayfanın üst kısmındaki simgesini tıklayın
+ CREATE CREDENTIALS > Service Account
.- Servis hesaba bir ad ve bir açıklama ve basın verin
CREATE
, ardındanCONTINUE
ve son olarakDONE
.
- Servis hesaba bir ad ve bir açıklama ve basın verin
Hizmet hesabınız şimdi oluşturulmuştur.
Hizmet Hesabı Kimlik Bilgileri Oluşturma:
Bunlara, Apps Komut Dosyası ile geliştirme botları sayfasındaki örnekte sağlanan kod için ihtiyaç duyulacaktır .
- Hizmet Hesabını oluşturduktan sonra, GCP Projesi için kullanabileceğiniz Kimlik Bilgileri listesine geri yönlendirileceksiniz.
Service Accounts
Bölümün altında, yeni oluşturduğunuz hizmet hesabınızı tıklayın. Bu çağrılacak[email protected]
- Tıklayın
ADD KEY > Create new key
JSON
Seçili tutun ve düğmesine basınCREATE
.- Bu, bu hizmet hesabı olarak API'ye erişmek için kullanmanız gereken bir kimlik bilgileri dosyasının indirilmesini başlatacaktır. BU DOSYAYI KAYBETMEYİN VEYA PAYLAŞMAYIN. Kaybolursa, bu hesabı silmeniz ve yeni kimlik bilgileri oluşturmanız gerekecektir.
Hangouts Chat API'yi etkinleştirme:
- Geri dönün
☰ > APIs & Services
ve seçinLibrary
. Hangouts Chat API
Tek sonucu arayın ve tıklayın.- Tıklayın
ENABLE
. Bu, projeniz için API'yi etkinleştirecektir.
Not: Bu sekmeyi henüz kapatmayın! Yine de GCP konsolunu daha sonra kullanmamız gerekecek.
Apps Komut Dosyası Projesini Ayarlama:
- Yeni bir Apps Komut Dosyası projesi oluşturun.
- Şimdi, örneği Async mesajlar sayfasından yeni projeye kopyalayıp yapıştırabilirsiniz .
- GCP konsolundan indirdiğiniz kimlik bilgileri dosyasını açın.
- Kopya
private_key
değeri ile (başlar Şunu-----BEGIN PRIVATE KEY-----
ve değeri yapıştırınSERVICE_ACCOUNT_PRIVATE_KEY
Apps Kodu projesinde. - Ayrıca
client_email
değeri kimlik bilgileri dosyasından kopyalayınSERVICE_ACCOUNT_EMAIL
ve Apps Komut Dosyası projesine yapıştırın .
- Kopya
Google Apps Komut Dosyası OAuth2 kitaplığını örnekte olduğu gibi kullanmak için, kitaplığın komut dosyası kimliğini kullanarak kitaplığı projeye eklemeniz gerekir.
- Apps Komut Dosyası proje kullanıcı arayüzünde
Resources > Libraries...
menü öğesini izleyin ve OAuth2 komut dosyası kimliğini kopyalayıpAdd a library
kutuya yapıştırın- Komut dosyası kimliği
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
- Bu ve kitaplığın geri kalanı, Apps Komut Dosyası GitHub için OAuth2 kod deposunda bulunabilir
- Komut dosyası kimliği
- Kitaplığın en son kararlı sürümünü seçtiğinizden emin olun (yazarken bu sürüm 38'dir)
- Tuşuna basın
Save
.
Ardından, Apps Komut Dosyası projesini daha önce oluşturduğunuz GCP projesine bağlamanız gerekir.
- GCP Console sekmesine geri dönün ve
☰ > IAM & Admin > Settings
menü öğesini izleyin . Project number
Bu sayfada tanımlananları kopyalayın .- Apps Komut Dosyası Projenizde,
Resources > Cloud Platform project...
menü öğesini izleyin ve Proje numarasınıEnter Project Number here
iletişim kutusuna yapıştırın . - Tıklayın
Set Project
.
Proje Manifestini Ayarlama: Apps Komut Dosyasında bir sohbet botu kullanmak için, chat
anahtarı projenin bildirimine eklemeniz gerekir .
- Apps Komut Dosyası Kullanıcı Arayüzünde simgesini tıklayın
View > Show manifest file
. - Son anahtar / değer çiftinden sonra aşağıdakileri ekleyin:
"chat": {
"addToSpaceFallbackMessage": "Thank you for adding me!"
}
Tam manifest dosyanız şimdi şuna benzer şekilde görünecektir:
{
"timeZone": "Europe/Paris",
"dependencies": {
"enabledAdvancedServices": [{
"userSymbol": "Drive",
"serviceId": "drive",
"version": "v2"
}],
"libraries": [{
"userSymbol": "OAuth2",
"libraryId": "1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF",
"version": "38"
}]
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"chat": {
"addToSpaceFallbackMessage": "Thank you for adding me!"
}
}
- Projenizi kaydedin.
Son Adımlar:
Neredeyse bitti! Şimdi, botu manifest'ten dağıtmanız ve GCP'de yapılandırmayı ayarlamanız ve gerçek aramayı yapacak tetikleyiciyi ayarlamanız gerekecek.
Botu dağıtmak:
- Apps Komut Dosyası Kullanıcı Arayüzünde, yeni açılan iletişim kutusuna gidin
Publish > Deploy from manifest...
ve tıklayınCreate
.- Not: Bunu tüm etki alanınız için kullanmak istiyorsanız Head dağıtımını kullanamazsınız, bu nedenle yeni bir dağıtımın oluşturulması gerekir.
- Dağıtıma bir ad ve açıklama verin ve düğmesine basın
Save
. - Kaydetme işlemi bittiğinde,
Get ID
yeni oluşturduğunuz dağıtımın yanındaki simgesine basın veDeployment ID
.
GCP yapılandırmasını kurma:
- Bulut konsoluna geri döndüğünüzde, şimdi gitmeniz gerekecek
☰ > APIs & Services > Dashboard
. - Bu sayfanın altındaki etkin API'ler listesinden
Hangouts Chat API
. - Soldaki menüden seçin
Configuration
. - Bot yapılandırmanızı ayarlayın. Bir vermeniz gerekecektir
Bot name
,Avatar URL
veDescription
. İşlevsellik ayarlarını odalarda çalışacak şekilde ayarlayın. - Altında
Connection Settings
,Apps Script project
önceki bölümdeki dağıtım kimliğinizi seçin ve yapıştırın. - Apps Komut Dosyası botunuza ilgili izinleri verin ve düğmesine basın
Save
.
Zor Tetikleyici:
Şimdi yapmanız gereken tek şey tetiğinizi kurmak. Bu, normal bir Apps Komut Dosyası tetikleyicisi gibi, Apps Komut Dosyası'ndaki
Edit > Current project's triggers
menü öğesinden yapılır. Örneği tamamlamak için sağ alttaki + Tetikleyici Ekle düğmesini tıklayın ve tetikleme ayarlarını aşağıdaki gibi ayarlayın:Hangi işlevi çalıştıracağınızı seçin:
onTrigger
Hangi dağıtımın çalıştırılması gerektiğini seçin: Head
Olay kaynağını seçin: Zaman odaklı
Zamana dayalı tetikleyici türünü seçin:
Minutes timer
Dakika aralığını seçin:
Every minute
Ve kaydet'e basın.
Ve bitirdiniz! Oluşturulan bu bot artık her dakika, geçerli zamanda olduğu tüm odalara gönderilecek.
Umarım bu açıklama size yardımcı olur!
Referanslar:
- Servis hesapları | Cloud IAM Belgeleri
- Hizmet hesaplarını anlama | Cloud IAM Belgeleri
- Apps Komut Dosyası ile bot geliştirme | Google Sohbet API'si | Google Developers
- Bot tarafından başlatılan mesajlar - Yeni botlar oluşturma | Google Sohbet API'si | Google Developers
- GitHub - gsuitedevs / apps-script-oauth2: Google Apps Komut Dosyası için bir OAuth2 kitaplığı.
- Google Bulut Konsolu