İleti dizisi webhook biçimi {:#conversation-webhook-format} (Dialogflow)

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 bir niyet gelene kadar 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ıkları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 giriş ve kullanıcı cihazının 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.