#author("2020-06-17T21:39:40+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(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; }}}