Dialogflow'da keşfet
Yanıt örneğimizi Dialogflow'a aktarmak için Devam'ı tıklayın. Ardından örneği dağıtmak ve test etmek için aşağıdaki adımları uygulayın:
- Bir temsilci adı girin ve örnek için yeni bir Dialogflow aracısı oluşturun.
- Temsilci içe aktarma işlemini tamamladıktan sonra Temsilciye git'i tıklayın.
- Ana gezinme menüsünden Karşılama'ya gidin.
- Satır İçi Düzenleyici'yi etkinleştirin ve ardından Dağıt'ı tıklayın. Düzenleyici, örnek kodu içerir.
- Ana gezinme menüsünden Entegrasyonlar'a gidin ve Google Asistan'ı tıklayın.
- Görüntülenen kalıcı pencerede, Değişiklikleri otomatik önizleme'yi etkinleştirin ve İşlem simülatörünü açmak için Test et'i tıklayın.
- Örneği test etmek için simülasyon aracında
Talk to my test app
ifadesini girin.
Basit yanıtlar, görsel olarak sohbet balonu biçiminde olur ve ses için metin okuma (TTS) veya Konuşma Sentezi Biçimlendirme Dili (SSML) kullanır.
TTS metni, varsayılan olarak sohbet balonu içeriği olarak kullanılır. Metnin görsel yönü ihtiyaçlarınızı karşılıyorsa sohbet balonu için görünen metin belirtmeniz gerekmez.
Bu görsel öğeleri İşleminize nasıl ekleyeceğinizi öğrenmek için görüşme tasarımı yönergelerimizi de inceleyebilirsiniz.
Özellikler
Basit yanıtlar, aşağıdaki gereksinimlere ve yapılandırabileceğiniz isteğe bağlı özelliklere sahiptir:
actions.capability.AUDIO_OUTPUT
veyaactions.capability.SCREEN_OUTPUT
özelliklerine sahip platformlarda desteklenir.Sohbet balonu başına 640 karakterle sınırlıdır. Sınırdan daha uzun olan dizeler, 640 karakterden önceki ilk kelime sonunda (veya boşlukta) kesilir.
Sohbet balonu içeriği, fonetik bir alt küme veya TTS/SSML çıktısının tam bir transkripti olmalıdır. Bu, kullanıcıların söylediklerinin haritasını çıkarmasına yardımcı ve çeşitli koşullarda daha iyi anlamasını sağlar.
Tur başına en fazla iki sohbet balonu.
Google'a gönderdiğiniz sohbet başlığı (logo) 192x192 piksel boyutunda olmalıdır ve animasyonlu olamaz.
Örnek kod
Node.js
app.intent('Simple Response', (conv) => { conv.ask(new SimpleResponse({ speech: `Here's an example of a simple response. ` + `Which type of response would you like to see next?`, text: `Here's a simple response. ` + `Which response would you like to see next?`, })); });
Java
@ForIntent("Simple Response") public ActionResponse welcome(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.add( new SimpleResponse() .setTextToSpeech( "Here's an example of a simple response. " + "Which type of response would you like to see next?") .setDisplayText( "Here's a simple response. Which response would you like to see next?")); return responseBuilder.build(); }
Node.js
conv.ask(new SimpleResponse({ speech: `Here's an example of a simple response. ` + `Which type of response would you like to see next?`, text: `Here's a simple response. ` + `Which response would you like to see next?`, }));
Java
ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.add( new SimpleResponse() .setTextToSpeech( "Here's an example of a simple response. " + "Which type of response would you like to see next?") .setDisplayText( "Here's a simple response. Which response would you like to see next?")); return responseBuilder.build();
JSON
Aşağıdaki JSON'un bir webhook yanıtını açıkladığını unutmayın.
{ "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Here's an example of a simple response. Which type of response would you like to see next?", "displayText": "Here's a simple response. Which response would you like to see next?" } } ] } } } }
JSON
Aşağıdaki JSON'un bir webhook yanıtını açıkladığını unutmayın.
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Here's an example of a simple response. Which type of response would you like to see next?", "displayText": "Here's a simple response. Which response would you like to see next?" } } ] } } } ] }
SSML ve sesler
Yanıtlarınızda SSML ve ses kullanmak, mesajınızı daha güzel hale getirir ve kullanıcı deneyimini iyileştirir. Aşağıdaki kod snippet'leri, SSML kullanan bir yanıtın nasıl oluşturulacağını gösterir:
Node.js
app.intent('SSML', (conv) => { conv.ask(`<speak>` + `Here are <say-as interpet-as="characters">SSML</say-as> examples.` + `Here is a buzzing fly ` + `<audio src="https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg"></audio>` + `and here's a short pause <break time="800ms"/>` + `</speak>`); conv.ask('Which response would you like to see next?'); });
Java
@ForIntent("SSML") public ActionResponse ssml(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.add( "<speak>" + "Here are <say-as interpet-as=\"characters\">SSML</say-as> examples." + "Here is a buzzing fly " + "<audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>" + "and here's a short pause <break time=\"800ms\"/>" + "</speak>"); return responseBuilder.build(); }
Node.js
conv.ask(`<speak>` + `Here are <say-as interpet-as="characters">SSML</say-as> examples.` + `Here is a buzzing fly ` + `<audio src="https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg"></audio>` + `and here's a short pause <break time="800ms"/>` + `</speak>`); conv.ask('Which response would you like to see next?');
Java
ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.add( "<speak>" + "Here are <say-as interpet-as=\"characters\">SSML</say-as> examples." + "Here is a buzzing fly " + "<audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>" + "and here's a short pause <break time=\"800ms\"/>" + "</speak>"); return responseBuilder.build();
JSON
Aşağıdaki JSON'un bir webhook yanıtını açıkladığını unutmayın.
{ "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "<speak>Here are <say-as interpet-as=\"characters\">SSML</say-as> examples.Here is a buzzing fly <audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>and here's a short pause <break time=\"800ms\"/></speak>" } }, { "simpleResponse": { "textToSpeech": "Which response would you like to see next?" } } ] } } } }
JSON
Aşağıdaki JSON'un bir webhook yanıtını açıkladığını unutmayın.
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "<speak>Here are <say-as interpet-as=\"characters\">SSML</say-as> examples.Here is a buzzing fly <audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>and here's a short pause <break time=\"800ms\"/></speak>" } }, { "simpleResponse": { "textToSpeech": "Which response would you like to see next?" } } ] } } } ] }
Daha fazla bilgi için SSML referans belgelerine bakın.
Ses kitaplığı
Ses kitaplığımızda çeşitli ücretsiz, kısa sesler sunuyoruz. Bu sesler sizin için barındırılır; bu yüzden tek yapmanız gereken bunları SSML'nize eklemektir.