Amazon Alexaのマルチリンガル対応で何が変わったか＆対応してみた

9/14よりAmazon Echoがイギリスとドイツで利用できるようになりました。

[Alexa and Amazon Echo Now Available in the UK and Germany](https://developer.amazon.com/public/community/post/Tx347QDN551BBTM/Alexa-and-Amazon-Echo-Now-Available-in-the-UK-and-Germany)

そして、新しく増えた2ヶ国向けのSkillも開発できるようになりました。

[How to Build a Multi-Language Alexa Skill](https://developer.amazon.com/public/community/post/Tx2XUAQ741IYQI4/How-to-Build-a-Multi-Language-Alexa-Skill)

[From "G'day" to "Guten Tag"](https://developer.amazon.com/public/community/post/Tx24HHHJVHPRPL1/From-G-day-to-Guten-Tag)
（"こんにちわ"って、G'dayって表現っできるんですね）

## Skillの管理画面

実際のSkillの画面を見ると、すでにUK対応していそうな感じが！

![Skill-01.png](https://qiita-image-store.s3.amazonaws.com/0/36184/389c3e70-6905-c1d8-d5d4-701f18a80cc4.png "Skill-01.png")

Skillの設定画面に言語のタブが増えてます
<img width="619" alt="c514a871-ec59-2a26-c69a-d6a47e8b19f5.png" src="https://qiita-image-store.s3.amazonaws.com/0/36184/f95d44e8-49e7-f7d1-65cc-a28f7bf29cd9.png">


インタラクションモデルの画面でも言語のタブがあり、言語によって`Intent schema`や`Custom Slot`、`Sample Utterances`が変えられるようになっています。
![Skill-03.png](https://qiita-image-store.s3.amazonaws.com/0/36184/726bba71-6ac0-8a27-e6d0-e9ae5a942611.png "Skill-03.png")
このあたりの細かい説明は、[JAWS-UG IoT専門支部 IoTサロン 2016-09](http://jawsug-iot.connpass.com/event/38161/)の発表で使ったスライドを見てもらえるとわかりやすいかと思います。
[
Alexa Skills Kitを使って自作のSkillを作る](http://www.slideshare.net/junichikawa1/alexa-skills-kitskill)


事前に定義されているSlotもかなり種類が増えました。
[Slot type](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interaction-model-reference#slot-types)

- AMAZON.AT_CITY
  - オーストリアの有名な都市の名前
- AMAZON.DE_CITY
  - ドイツの有名な都市の名前
- AMAZON.EUROPE_CITY
  - ヨーロッパの有名な都市の名前
- AMAZON.GB_CITY
  - イギリスの有名な都市の名前

これらのSlot Typeから想像するに、単にイギリスやドイツで使えるようになりました！というよりも、もっと広い範囲のヨーロッパにいる人たちが利用できるようなSkillの開発を期待しているのかなと思いました。


## ドイツ語対応

せっかくなのでドイツ語対応してみました。

公開しているSkillは`Alexa, ask moon age`と質問すると今日の月の月齢を教えてくれる簡単な物なので、google translateを駆使すればなんとかなるはず。

### Skill Information

`Add New Language`のタブをクリックして、言語にドイツ語を指定します。

Skillの画面に表示されるアプリ名と、実行する際の起動ワード（Invocation Name）をドイツ語で登録します。

![Skill-04.png](https://qiita-image-store.s3.amazonaws.com/0/36184/cebd5a28-ed31-95af-71b7-94ebe9d9afd0.png "Skill-04.png")


### Interaction Model

Intentは英語と変わりません。

```
{
  "intents": [
    {
      "intent": "AskMoonAge"
    }
  ]
}
```

Sample Utterancesは発話によってどのIntentを指定するかの紐付けなので、ドイツ語で考える必要があります。

英語版

```
AskMoonAge ask moon age
AskMoonAge today's moon age
```

ドイツ語版

```
AskMoonAge ask Mondphasen
AskMoonAge heutigen mondphasen
```

## Skillのコード

このSkilはLambdaで作っているので、Lambdaのコードを修正します。

Lambdaに送られてくるリクエストのイベントに`locale`が含まれるようになったので、その値を参照して、返す言語を切り替えればOKです。

```
  "request": {
    "type": "LaunchRequest",
    "requestId": "EdwRequestId.86330998-71c9-439e-b63c",
    "locale": "en-GB",
    "timestamp": "2016-10-08T05:57:36Z"
  },

```

## Skillのテスト

テストの画面でもドイツ語のタブが増えているので、起動ワードを入力してテストします。
![Skill-05.png](https://qiita-image-store.s3.amazonaws.com/0/36184/4f5a04fa-3d13-e653-c135-e8723d3a6d0b.png "Skill-05.png")

画面右下の再生ボタンをクリックすると、Skillが返してきたテキストを再生してくれます。ちゃんとドイツ語ですね！！（全然わからないけど）

ちなみに、英語、イギリス英語、ドイツ語では声が女性の声ですが、少しづつ違います。

## 公開

全体的な流れは以前書いたこちらのエントリを参考にしてください。

[Alexa Skillsを公開する流れ](http://qiita.com/sparkgene/items/ac3d14f1e8815ce8802a)

前にはなかった項目`Countries & Region`が増えてました。

![Skill-06.png](https://qiita-image-store.s3.amazonaws.com/0/36184/017b159b-f10a-a815-58c4-deaa88f39848.png "Skill-06.png")

現在は音楽のストリーミングなどもできるようになったので、Skillの内容によっては公開先を限定しないと駄目なのかもしれないですね。
今回はデフォルトの`In all countries and regions where Amazon has presence`を選びました。

13才未満の子供を対象としたSkillなのかも問われています。

![Skill-07.png](https://qiita-image-store.s3.amazonaws.com/0/36184/fa317321-2b10-bad8-0f85-dc2aae8ecb91.png "Skill-07.png")

とりあえずNoで。

すべての入力が済んでると`Submit for Certification`のボタンが押せるようになるので、問題がなければクリックします。

無事、審査に提出できたようです。

![Skill-08.png](https://qiita-image-store.s3.amazonaws.com/0/36184/48276269-2d39-e154-f1a4-e6795c076f00.png "Skill-08.png")

前回と同じであれば数日で審査が終わるので、結果を待ちます。

Skillの一覧画面を見ると、Skillの状態が確認できます。
すでに公開済みのSkillと、審査中ステータスになった物が表示されています。

![Skill-09.png](https://qiita-image-store.s3.amazonaws.com/0/36184/967ddd1d-9850-3290-69b5-f2396adfe765.png "Skill-09.png")

審査結果は後日こちらに書きます。

## 審査結果(11/3追記)

10/8に審査に提出したところかなりの間放置され（世界的にも審査が遅かったようです）、10/21にリジェクトされました。  
リジェクトの理由は、「sample utterancesが少ないから、もっと増やせ」とのこと。言語ごとにリジェクト理由が書かれてくるのですが、３言語とも指摘されました。初回はそれで通ったのにと、、と思いつつもドイツ語に関してはサンプルも書かれていたので、５個ぐらいに増やして再度申請。

10/24に再度リジェクト。今回は速かった。  
リジェクトの理由は、UKに関しては前回と同じ「sample utterancesが少ないから、もっと増やせ」とのこと。（６個ぐらいあると大丈夫そう）  
ドイツ語に関しては、「使い方のサンプルに書かれている発話は、sample utterancesにもないとダメだよ」という指摘。typoですね。。  
時間が取れなかったので、10/29に再々審査に提出。

11/3に無事審査通過！！
<img width="449" alt="alexa-certification-pass.png" src="https://qiita-image-store.s3.amazonaws.com/0/36184/62c68848-7417-2f35-13bb-5c7edde8931c.png">

ドイツ語は全くわからないので、sample utterancesを複数種類書くのに凄い苦労します。