2017-08-16 43 views
0

我正在使用AWS開發工具包將AWSLexVoiceButton添加到我的應用程序。我有它配置在意向客戶履行我建立,我想使在AWS控制檯基於語音命令對我的意圖在屏幕上的應用程序顯示的東西:AWSLexVoiceButton提示和客戶端執行響應

AWS fulfillment

這一切工作,和我在下面的代碼回調時博特承認我的意圖:

func voiceButton(_ button: AWSLexVoiceButton, on response: AWSLexVoiceButtonResponse) { 
    // `inputranscript` is the transcript of the voice input to the operation 
    if response.dialogState == .readyForFulfillment { 
     print("Ready to fulfill") 
     // I want to provide speech output 
     say(text: "OK, I will show the train status screen") 
     showTrainStatusScreen() 
    } 
} 

兩個問題:

  1. 當我點擊了AWS LexVoiceButton,沒有任何聲音指示它正在聆聽,並且除非您發出足夠大的聲音以引起其麥克風聲音檢測動畫,否則您看不到任何跡象,即使您按下該按鈕也沒有任何提示。我找不到添加語音提示的方法,例如「我該如何幫助您?」因爲當最初點擊按鈕時沒有AWSLexVoiceButtonDelegate回調。

    問:有什麼方法可以在Lex人聽時添加音頻提示?

  2. 同樣,沒有音頻指示客戶正在履行意圖。因爲有回撥,我可以添加自己的回覆。但爲此,我手動設置了一個AVAudioPlayer並與AWS Polly集成,將我的文本轉換爲我編寫的自定義say方法中的語音。我的方法很有效,但似乎一定是錯誤的。

    問:是否有任何方法可以觸發Lex自定義音頻響應作爲客戶端實現的結果?

+0

是履行有關圖像在這裏?我假設你的履行是一個基於問題內容的lambda函數。 – Milk

+0

它實際上不是一個lambda函數。對於我的用例,我只需要在語音命令上啓動屏幕,因此不需要進行服務器端計算。 – davidgyoung

+0

在這種情況下,我已經更新了問題2的答案 – Milk

回答

1
  1. 不能提供通過萊克斯而無需來自用戶的請求的響應。我不熟悉iOS,但是在Android中,您可以在應用程序中添加此功能以手動處理這種情況。我猜想iOS允許類似的功能。請評論,如果我錯了。不幸的是,這不是Lex提供的。

  2. Lex只會在履行完成後迴應完成既然你不需要服務器端履行,你可以創建一個lambda函數,它除了返回你正在尋找的完成響應外什麼也不做。

希望幫助

+0

添加一個lambda以提供自定義語音響應非常簡單。 您可以使用Amazon示例[此處](http://docs.aws.amazon.com/lex/latest/dg/gs2-prepare.html),僅更改文本響應。 這仍然會發送有關在同一回調中觸發的所有信息到'func voiceButton(_ button:AWSLexVoiceButton,on response:AWSLexVoiceButtonResponse)',但使用'response.dialogState ==。履行'而不是'response.dialogState == .readyForFulfillment',所以我的自定義履行邏輯可以留在那裏。 – davidgyoung