2017/5/18

簡單建立一個 Cortana Skill

//Build 2017 推出了 Cortana Skill,真的是千呼萬喚啊!
因爲 Amazon, Google 陸續推出語音助理設備 (在中國有小米, 微信, ... 等廠商也有推出),我相信語音助理將會改變生活 (經典範例:鋼鐵人)。因此,下面簡介怎麽建立一個 Cortana Skill 服務。


[觀念重點]
  1. 需要跟 Bot Framework 整合
  2. Bot Framework 設定 Messaging endpoint 與 Cortana 做結合
  3. Windows 10 Anniversary Update 以上的版本才有支援; iOS/Android 請安裝最新版本的 Cortana
  4. 目前只有開放 en-us 的環境,請參考 Locale Support for Cortana Skills 的説明
  5. Cortana Skill 支援 OAuth 的驗證方式
  6. 未發佈 Cortana Skill 前可以開啓 debug mode
  7. Bot Framework 設定時可以加入 LUIS 的整合
  8. 開發與測試前先檢查一下環境 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:

沒有留言:

張貼留言