Q&A

チュートリアル最初の方のExtensionサーバー確認方法がわからない

チュートリアルの最初の方で、Postmanを使用してExtensionサーバーが正しく動作しているか確認する箇所があるのですが、 (詳細についてはgitとあるのでgitの方を見ながら)試しにPostmanでリクエストしてみたところMissing signature.と表示されてしまいました。 Postmanで確認する箇所について詳しく教えていただけないでしょうか?もしくは参考になるサイトがあれば教えていただけると有難いです。

Clova DeveloperCenterβ

Clova DeveloperCenterβ
チュートリアル
	簡単なExtensionを作成する
		ステップ1 Extensionサーバーを用意する
(省略)
こうやって実行したExtensionサーバーが正しく動作しているか確認するには、Postmanを使用してリクエストを送信します。詳細については、[サイコロ遊びExtensionのgithub](https://github.com/line/clova-extension-sample-dice)ページで確認できます。上記通りに正しく実行されることを確認したら、外部からアクセスできるサーバーに移して実行します。

サイコロ遊びExtensionのgithub日本語ドキュメント

概要

「サイコロ遊び」というClova ExtensionのREST APIサーバーのソースコードです。サイコロ遊びExtensionがどのように動作するかを見るためには、ClovaアプリやClovaのスマートスピーカー(Clova WAVE、Clova Friends)に「サイコロ遊びを起動して」と話しかけてください。このExtensionを実行すると、サイコロを振った結果を返します。サイコロは1個から10個まで振ることができ、2個以上の場合はその合計を返します。

使用環境

サイコロ遊びExtensionのREST APIサーバーは、Node.jsで実装されています。Windows、MacOS、Linuxなど、Node.jsが稼動可能なOSで実行可能です。詳細については下記のサイトを参照し、Node.jsをあらかじめインストールしてください。 https://nodejs.org/ja/download/current/

インストール方法

サイコロ遊びのREST APIサーバーのソースコードは、次の手順でインストールしてください。

Node.jsをインストールする: https://nodejs.org/ja/download/current/
ソースコードをダウンロードする: git clone https://github.com/line/clova-extension-sample-dice.git
依存ライブラリをインストールする: npm install
config.js を編集し、"com.example.dice"を登録済みのExtension IDへ書き換える
使い方

「サイコロ遊び」ExtensionのREST APIサーバーは、ClovaプラットフォームからのExtensionリクエストに応じて適切な応答をするようになっています。APIサーバーを実行する場合、正常に動作しているかを確認するために、Clovaプラットフォームが送信するのと同じAPIを送信する必要がある点に留意してください。実際にサービスを行う際には、外部からhttpsでアクセス可能なドメインにする必要があります。

APIサーバーの実行: node app.js
APIサーバーのテスト: Postmanで下記のようにJSONリクエストを送信して、JSONが応答するかテストしてみます。
URL: http://localhost:3000/clova
リクエスト方法: POST
Body: raw (JSONフォーマット)
リクエスト例)
以下省略
  • 0
  • 2
  • 2112
  • twitter facebook

ローカル環境でのPostmanを使った動作確認であれば 署名の検証を省いても問題ないので、以下の箇所をコメントアウトするとレスポンス内容が確認できるようになります。 https://github.com/line/clova-extension-sample-dice/blob/github-public/clova/index.js#L174

※サーバ上で実施する場合は、必ずコメントアウトを戻してから行うようにしてください。

レスポンスの例

{
    "response": {
        "directives": [],
        "shouldEndSession": true,
        "outputSpeech": {
            "type": "SpeechList",
            "values": [
                {
                    "type": "PlainText",
                    "lang": "ja",
                    "value": "サイコロを 1個 投げます。"
                },
                {
                    "lang": "ja",
                    "type": "URL",
                    "value": "https://clova-common.line-scdn.net/dice/rolling_dice_sound.mp3"
                },
                {
                    "type": "PlainText",
                    "lang": "ja",
                    "value": "結果は 2 です。"
                }
            ]
        },
        "card": {}
    },
    "version": "0.1.0",
    "sessionAttributes": {}
}
  • 0

Postmanでの疎通確認との意味では、『Missing signature.』が出力されることで、正解だよ。 もし、Requestに対するResponseもPostmanで見たいなら、PostmanのHeaders項目の設定が必要だよ。

〇Headersに、以下のKey、Valueを設定する。 Content-Type application/json;charset=UTF-8 signaturecek <リクエスト事に毎回生成される暗号文字列>

signaturecekのValue値は、LINEさんのヒミツ鍵で、Request Body部を暗号化されてる文字列になるはずなので、これをPostman検証用に準備するのは、正直めんどいよ。 Postmanでは、簡易疎通チェックにとどめて、動作確認は、ブラウザテスト(任意インテント呼び出し)か実機テスト(Clovaデバイス)が、早いとおもうよ。

  • 0
本当によろしいですか? question.vm