- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-06-17T21:34:26+09:00","default:nobuoki","nobuoki")
#author("2020-06-17T21:40:04+09:00","default:nobuoki","nobuoki")
* さくらのレンタルサーバでAlexaスキルを実行する [#cde3c2f1]
[[Amazon Echo (Alexa)でのジュークボックス・スキルの開発:手持ちのmp3ファイルを音楽再生したい>https://www.sealight.jp/alexa/jukebox.html]]
のスキルサーバ、データサーバをさくらのレンタルサーバで実行してみました。
のスキルサーバ、データサーバをさくらのレンタルサーバにデプロイしてみました。
解説がとても丁寧なので、素直に手順通りに進めていけば良いですが、うっかり忘れそうなことをいくつか記載します。
** エンドポイント [#pbac1df5]
あなたのアカウント.sakura.ne.jp を使う場合、証明書は「ワイルドカード証明書」にします。
(curl -v https://あなたのアカウント.sakura.ne.jp/ とかやると分かります)
#ref(endpoint.png)
|&ref(Stories/2020-06-17/endpoint.png, wrap);|
** myjuke.php [#v7e94000]
データ・サーバのURL
#prism(php){{{
1 <?php
2 error_reporting(0);
3
4 define('MP3URL', 'https://あなたのアカウント.sakura.ne.jp/配置したディレクトリ/mp3.php?'); // ★ココ★
5 define('NORMAL', 'N');
6 define('SHUFFLE', 'S');
}}}
スキルID
「Alexa Developer Console」のスキル一覧にある「スキルIDの表示」で調べて書き写します
#prism(php){{{
11 // 必須チェック(証明書以外)
12 if ($envelope['context']['System']['application']['applicationId']
13 // スキルIDは修正必須です。このままだとエラーになります。
14 // スキルIDをシングルクォートで囲ってください。
15 // 例:'amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
16 != 'amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx') { // ★ココ★
}}}
パスワード文字列
パスワード文字列(例として SECRETPASSEWORD にしてみます)
#prism(php){{{
117 public function url() {
118 $uts = time();
119 $param = 'cat='.$this->cat.'&num='.strval($this->num).'&state='.strval($uts);
120 // パスワード文字列は修正必須です。このままだとエラーになります。
121 // データ・サーバのプログラムと同じパスワードをシングルクォートで囲ってください。
122 $sum = sha1('SECRETPASSWORD'.'cat'.$this->cat.'num'.strval($this->num).'state'.strval($uts)); // ★ココ★
123 $envelope = MP3URL.$param.'&sum='.$sum;
124 return $envelope;
125 }
}}}
** mp3.php [#t2a985e8]
パスワード文字列(myjuke.phpと合わせます)
#prism(php){{{
18 // パスワード文字列は修正必須です。このままだとエラーになります。
19 // ジュークボックス・スキルのプログラムと同じパスワードをシングルクォートで囲ってください。
20 $sum = sha1('SECRETPASSWORD'.'cat'.$myCat.'num'.$myNum.'state'.$myState); // ★ココ★
21 if ($sum != $mySum) {
22 return;
}}}