#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;
}}}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS