Bu bölümde Actions on Google'ın Actions SDK aracılığıyla sipariş karşılama.
Bir ileti dizisi başladığında, benzersiz bir conversationId
ile tanımlanır. Sonraki her kullanıcı için
Asistan'a sorgu gönderirseniz, sipariş karşılama işleminiz niyet
webhook'unuz işleyip yanıt vermelidir. Bu conversationId
her istekte devam eder ve
yanıt çiftinin tamamını kullanabilirsiniz.
İstek içeriği
Kullanıcılar ilk sorguyu yaptığında veya sonraki girişleri sağladığında Asistan bir istek gönderir. önem taşır. Görüşme webhook istekleri kullanıcının ham metni, tetiklenen amaç ve kullanıcının ham metni gibi verileri içermesi cihaz girişi ve yüzey özellikleri.
Sohbet webhook'u biçimindeki bir istek için önemli alanlar aşağıda özetlenmiştir:
Alan | Açıklama |
---|---|
isInSandbox |
Bu boole değişkeni, birincil olarak
işlemler özelliğini kullanarak, webhook'unuzun bu isteği korumalı alanda işlemesini isteyip istemediğinizi belirtin.
yatırım yapmanız önemlidir. Korumalı alan modunda, webhook'unuz kullanıcıların satın alma siparişlerini ödememeli veya yerine getirmemelidir.
Bu ayar varsayılan olarak "true " değerine ayarlıdır. |
surface |
Kullanıcının Asistan'la etkileşime girdiği yüzey ve Asistan'ın özellikleri. |
Inputs |
Çağrı isteğiyle ilgili bilgiler. Tetikleyici çağrı için, buna bir niyet ifade eder. Sonraki bu nesne aynı zamanda isteğe bağlı ve beklenen girişlerin belirtilmesidir. |
User |
İsteği başlatan kullanıcıyla ilgili bilgiler. Bu bilgiler, izinleri içerir kullanıcı tarafından verilen izinler ve kullanıcının yerel ayarı. |
Conversation |
Görüşme kimliği ve türü de dahil olmak üzere görüşme bağlamıyla ilgili bilgiler (örneğin, bu isteğin yeni bir görüşme başlatıp başlatmadığı) ve bir görüşme jetonu sohbet süresi boyunca kalıcı verileri depolamak için kullanılır. |
availableSurfaces |
Bu bilgiler şu amaçlarla kullanılır: çok yüzeyli ileti dizileri. |
Basit çağrı isteği örneği
Aşağıdaki snippet'te, görüşme webhook'u biçimindeki bir çağrı isteği örneği gösterilmektedir.
{ "user": { "userId": "ABwppHEF...", "locale": "en-US", "lastSeen": "2018-03-21T17:59:52Z", "userStorage": "{\"data\":{}}" }, "device": {}, "surface": { "capabilities": [ { "name": "actions.capability.SCREEN_OUTPUT" }, { "name": "actions.capability.AUDIO_OUTPUT" }, { "name": "actions.capability.MEDIA_RESPONSE_AUDIO" }, { "name": "actions.capability.WEB_BROWSER" } ] }, "conversation": { "conversationId": "1521784527171", "type": "NEW" }, "inputs": [ { "intent": "actions.intent.MAIN", "rawInputs": [ { "inputType": "VOICE", "query": "Talk to my test app" } ] } ], "availableSurfaces": [ { "capabilities": [ { "name": "actions.capability.SCREEN_OUTPUT" }, { "name": "actions.capability.AUDIO_OUTPUT" }, { "name": "actions.capability.MEDIA_RESPONSE_AUDIO" }, { "name": "actions.capability.WEB_BROWSER" } ] } ] }
Basit görüşme isteği örneği
Aşağıdaki snippet'te, sohbet webhook'u biçimindeki sohbet isteği örneği gösterilmektedir. burada kullanıcı girişi bir metin dizesidir (örneğin, “Uğurlu sayım 88.”):
{ "user": { "userId": "ABwppHEF...", "locale": "en-US", "lastSeen": "2018-03-21T17:59:52Z", "userStorage": "{\"data\":{}}" }, "device": {}, "surface": { "capabilities": [ { "name": "actions.capability.SCREEN_OUTPUT" }, { "name": "actions.capability.AUDIO_OUTPUT" }, { "name": "actions.capability.MEDIA_RESPONSE_AUDIO" }, { "name": "actions.capability.WEB_BROWSER" } ] }, "conversation": { "conversationId": "1521784527171", "type": "NEW" }, "inputs": [ { "intent": "actions.intent.TEXT", "rawInputs": [ { "inputType": "VOICE", "query": "My lucky number is 88." } ] } ], "availableSurfaces": [ { "capabilities": [ { "name": "actions.capability.SCREEN_OUTPUT" }, { "name": "actions.capability.AUDIO_OUTPUT" }, { "name": "actions.capability.MEDIA_RESPONSE_AUDIO" }, { "name": "actions.capability.WEB_BROWSER" } ] } ] }
Yanıt gövdesi
Karşılama uç noktanızdaki HTTP gönderilerinin başlığındaki Content-Type
Asistan, application/json
olmalıdır.
Yanıt sohbet webhook'u biçimi, kullanıcı arayüzünde gösterilen gerçek kullanıcı arayüzü kullanıcı (ses ve görsel bileşenler dahil) ve sonraki istekte tetiklenir (beklenen amaç olarak adlandırılır). Beklenen Niyet, aşağıda açıklandığı gibi Asistan'ın anladığı amaçlardan herhangi biri olabilir referans noktası Intents API referansıdır.
Aşağıdaki durumlarda yanıtlarınız için kullanıcı arayüzünü biçimlendirme bunları Asistan'da görüyorsanız Yanıtlar belgeleri.
Basit yanıt örneği
Aşağıdaki snippet'te, ileti dizisindeki basit bir yanıtın örneği gösterilmektedir webhook biçiminde olur.
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "You are using the Actions SDK. Do you want to hear more about it?" } } ] } } } ] }
Yardımcı örneği
Aşağıdaki snippet'te, görüşmede yardımcı niyeti kullanmaya dair bir örnek gösterilmektedir
webhook biçiminde olur. Bu örnekte webhook,
actions.intent.OPTIONS
yardımcısının, Asistan'a bir
kullanıcı tarafından gerçekleştirilen birden fazla seçenekten
seçim yapabilirsiniz.
Yardımcı amaçları kullanma hakkında daha fazla bilgi edinmek için Yardımcı kılavuzu.
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.OPTION", "inputValueData": { "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec", "carouselSelect": { "items": [ { "optionInfo": { "key": "one", "synonyms": [ "synonym of KEY_ONE 1", "synonym of KEY_ONE 2" ] }, "description": "Description of number one", "title": "Number one" }, { "optionInfo": { "key": "two", "synonyms": [ "synonym of KEY_TWO 1", "synonym of KEY_TWO 2" ] }, "description": "Description of number two", "title": "Number two" } ] } } } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "this shows an example of a carousel" } } ], "suggestions": [ { "title": "1" }, { "title": "2" } ] } } } ] }
İleti dizisini sonlandırma örneği
Aşağıdaki snippet'te, bir ileti dizisini sonlandırmak için basit bir yanıt örneği gösterilmektedir oturum açın.
expectedUserResponse
Asistan'a başka kullanıcının olmadığını bildirdiği için yanıt mesajındaki false
değeri
bu girişin olması ve mevcut sohbeti sonlandırması gerekir. İlgili içeriği oluşturmak için kullanılan
finalResponse
değeri, Asistan'ın kullanıcıya önceden ne görüntülemesi veya çıktısını belirtmesi gerektiğini belirtir
iletişim sona erer.
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Good bye" } } ] } } }
Kullanıcılar bir standardı çağırdığında varsayılan davranışın nasıl geçersiz kılınacağını öğrenmek için konuşmayı bitirmek için konuşmaya, İleti dizisinden çıkışlar.