因爲 Amazon, Google 陸續推出語音助理設備 (在中國有小米, 微信, ... 等廠商也有推出),我相信語音助理將會改變生活 (經典範例:鋼鐵人)。因此,下面簡介怎麽建立一個 Cortana Skill 服務。
[觀念重點]
- 需要跟 Bot Framework 整合
- 在 Bot Framework 設定 Messaging endpoint 與 Cortana 做結合
- Windows 10 Anniversary Update 以上的版本才有支援; iOS/Android 請安裝最新版本的 Cortana
- 目前只有開放 en-us 的環境,請參考 Locale Support for Cortana Skills 的説明
- Cortana Skill 支援 OAuth 的驗證方式
- 未發佈 Cortana Skill 前可以開啓 debug mode
- Bot Framework 設定時可以加入 LUIS 的整合
- 開發與測試前先檢查一下環境 Set up your Cortana skills development environment
根據上面重點,可以想像 Cortana Skill 的使用流程如下圖:
我們就來建立一個 Bot 並讓 Bot Framework 與 Cortana 連接起來完成測試,步驟如下:
1. 參考 Create a bot with the Bot Builder SDK for .NET 建立一個 Bot 服務,並且上傳到 Azure 變成 App Service;
利用 Bot Application template 方便建立 Bot 重要的類別 MessagesController (REST 服務的控制核型):
[BotAuthentication]
public class MessagesController : ApiController
{
/// <summary>
/// POST: api/Messages
/// Receive a message from a user and reply to it
/// </summary>
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message)
{
await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
}
放到 Azure 是最方便的,加上 Bot Framework 對於 Messaging endpoint 要求是 HTTPS,Azure 也幫我解決了這個問題。詳細的 Bot Framework 支援的訊息内容,呈現方式與相關功能,可以參考 Creating a Bot based Skill。
2. 到 Cortana Dev Center 裏面的 Dashboard 建立 Cortana Skill;
2-1. 建立一個 Bot 服務,在命名上面要特別注意 (因爲只能設定一次):
需要建立 Microsoft App ID 與 Password 建立好的内容需要更新到 Web.config 如下:
<appSettings>
<add key="BotId" value="來自命名在 bot handle 的值">
<add key="MicrosoftAppId" value="Microsoft app id ">
<add key="MicrosoftAppPassword" value="Microsoft app password">
</appSettings>
建立完成之後可以用 test 開一個簡單的 WebView 來測試,如下圖:
2-2. 綁定 Cortana 的整合:
Cortana 綁定是 別名 是特別要注意的,重點要讓人容易發音,避免過長的文字。
可以參考 Cortana Invocation Name Guidelines 介紹的定義方式,來調整名稱,例如:
可以看出口語指令是有固定 pattern 的,因此 invocation name 是很重要的。
最後可以再根據需要整合其他 OAuth 的驗證方式或是存取用戶的某些内容,如下:
完成之後就可以按下儲存,這樣 Bot Framework 就會幫忙把 Cortana channel 整合起來。
3. 回到 Cortana Dev Center 裏面的 Dashboard,開啓 Debug;
開啓 Debug 功能後,記得檢查在設備中 Cortana 的使用者帳號與 Dashboard 這個帳號是否一樣,需要一致才能測試。
如果想要提供給其他人測試,可以選擇發佈到 Group,只要在發佈的時候填入要授權測試的 Microsoft Account。
這些 Microsoft Account 的用戶就會收到要求認可的 email,要記得去點擊認證,大約 10 分鐘之後就可以使用該 Cortana Skill。
4. 測試 Cortana Skill;
Cortana 要使用特定的 skill 是寫句子的 pattern 要遵守,才有辦法啓動需要的 skill。
Windows 範例:
iOS 範例:
可以看到剛才建立的 Bot Service 回傳的結果出現在 Cortana 上面,回傳的内容可以很豐富的,可以參考 Card Design Best Practices 的介紹。
另外在 Debug 時可以看到完整的 log 訊息幫助除錯 (發佈出去之後就不會在顯示了),再後面幾篇將會詳細説明。
[注意] 在 Windows 設備上測試只能用 說 的來執行特定的 skill;在 iOS/Android 上面您可以輸入文字或是用說的 都有支援。
======
這一篇是很快速的説明怎麽建立,但是還有很多細節我建議一定要熟讀 The Cortana Skills Kit 這一份裏面的所有内容。
也許 Cortana 沒有支援繁體中文,但 中文/日文/英文 這些比較在亞洲常遇到的語言還是有 Cortana 服務的機會。
一起來玩看看吧,後面會再補上幾篇細部的説明。謝謝。
References:
- The Cortana Skills Kit
- Start building bots with the Bot Framework
- Cortana Invocation Name Guidelines
- Testing & Debugging Best Practices
- Create a Skill from Scratch
- Register a bot with the Bot Framework
- Test a Cortana skill
- //Build2017 Channel9 (Cortana & Cortana Skill)
- Debug bots with the Bot Framework Emulator
沒有留言:
張貼留言