Alexaに時間を伝えてみる
結論
- Alexaに時間(期間)を伝えるときは素直にAMAZON.DURATIONを使おう。
- ドキュメントとサンプルをちゃんと読もう。
Alexaに時間を教えてみる
最初あまりドキュメント見ずにスロット増やして行けるかな?と思ったのでやってみました。
スロットを増やして{AMAZON>NUMBER}を使ってみる
Intentのサンプル発話に↓のようなものを用意します
{hour} 時間です
{hour} 時間 {minute} です
{hour} 時間 {minute} 分 {second} 秒です
{minute} 分 です
{minute} 分 {second} 秒です
{hour} 時間 {second} 秒です
{second} 秒です
Lambda側ではとりあえず発話した時間を言ってもらうようにします。
'TimeIntent': function () {
const hour = this.event.request.intent.slots.hour.value;
const minute = this.event.request.intent.slots.minute.value;
const second = this.event.request.intent.slots.second.value;
let hourMsg = '';
if (!hour) {
hourMsg = hour + '時間';
}
let minuteMsg = '';
if (!minute) {
minuteMsg = minute + '分';
}
let secondMsg = '';
if (!second) {
secondMsg = second + '秒';
}
this.emit(':tell', hourMsg + minuteMsg + secondMsg + 'です。');
},
'DistanceIntent': function () {
const duration = this.event.request.intent.slots.Duration.value;
this.emit(':tell', duration + 'キロメートルです。');
},
しかしダメだった
テストシュミレータでいざ実行してみると
私「○○スキル開いて〜」
A「時間を教えてください」
私「1時間2分3秒です。」
A「1時間2分3秒です。」
私「1時間2分3秒」
A「1時間2分?秒です。」
こんな感じで語尾に「です」をつけなかったりするとうまくいかなくなったりします。
テストシュミレータだけではなく実機でやっても?になったりします。
そのうちこういうのもうまくできるようになると思いますが、
現状よくわからなかったので、ちゃんとドキュメント読んでAMAZON.Durationを使うことにします。
AMAZON.DURATION
このAMAZON.DURATIONは時間(期間)を発話(「1時間」とか「30分」とか)というとISO-8601の表記で認識します。
このAMAZON.DURATIONを使えば「1時間20分30秒」とかも"PT1H20M30S"と認識してくれます。
さらに「3時間半」とかいってもちゃんと"PT3H30M"と認識してくれるのはありがたいところです。
※ただし小数点は認識してくれないので1.5時間とかはダメ
とりあえず時間だけが欲しかったので、↓のような正規表現を使えば値は取得できます。
function parser(m, length) {
if (m.length < length) {
return '';
} else if (!m[length - 1]) {
return ''
} else {
return m[length - 1].slice(0, -1);
}
}
const duration = this.event.request.intent.slots.Duration.value;
const m = duration.match(/(^PT)(\d+H)?(\d+M)?(\d+S)?/);
const hour = parser(m, 3);
const minute = parser(m, 4);
const second = parser(m, 5);
正規表現の"PT"以降が時刻になるため、例えば「1時間2分3秒」だと1と2と3が取れます。
ただし、「1年2ヶ月3日4時間5分6秒」とか言われると"P"が先頭になるので日時が欲しい場合は正規表現を変える必要があります。
Author And Source
この問題について(Alexaに時間を伝えてみる), 我々は、より多くの情報をここで見つけました https://qiita.com/tanahashi_kei/items/268539fa7a663a61fd24著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .