フォーラム詳細

  • 解決済み
    #ID:4
    通知ノードの動作確認について
  • 投稿者:まさのり
    投稿日:2017年12月04日

    いつもお世話になっております。

    通知ノードについてご質問させて下さい。
    スキルパックAからスキルパックBに通知を行おうと考えておりますが
    現状、スキルパックBがキックされない状況です。
    正しい設定方法をご教授お願い致します。

    現在の設定内容は以下のようになっております。

    【スキルパックA】
    msg.url = https://<ホスト名>:<ポート>/api/<バージョン>/<メソッド名>;
    msg.method = 'POST';
    msg.headers =
    {
    'accept':'application/json',
    'cache-control':'no-cache',
    'content-type':'application/json'
    };

    msg.payload =
    {
    'targetSkillpackPackageName':'XXXXXXXXX.XXXXXX', ← スキルパックBのパッケージ名(デバッグ時はNODE ID)を設定しております。
    'user':{
    'identifier':'XXXX_XXXXXXXXX', ← notificationNode.pdfの記載内容を設定しております。
    'password':'XXXXXXXXXXXX9999' ← notificationNode.pdfの記載内容を設定しております。
    },
    'contents':[
    {
    'textMessage':'テスト'
    }
    ]
    };

    【スキルパックB】
    notificationNode.pdfのサンプルコードをインポートしております。

    ちなみにデバッグモードおよびPOSTMANからSENDした場合も同じ結果になっております。
    (Statusが201で戻ってきます。)

    ご教授、よろしくお願い致します。
このトピックに返信するにはログインが必要です。
9件の返信を表示中
#ID:6

回答者:ユニロボット
回答日:2017年12月04日

ご質問ありがとうございます。
少し教えてください。

## 同じ結果という点について
>ちなみにデバッグモードおよびPOSTMANからSENDした場合も同じ結果になっております。
>(Statusが201で戻ってきます。)

POSTMANで201 Createdであれば、API自体は正しく叩けているようです。
同じ結果というのは、POSTMANでAPIを実行したときに、スキルパックBで発話がないということでしょうか?

## スキルパックBで発話出来ている場合
もし、スキルパックBにおいて、発話はできているものの、スキルパックAからAPIを叩いても実行出来ない場合は、可能性として以下のことが考えられます。
1. スキルパックAとスキルパックBが同一ユニボ上にある場合、スキルパックAが実行された場合に、リセットがかかっていませんか?
2. スキルパックAのPayloadは、functionNodeではなく、templateNodeを使っており文字列として認識がされていませんでしょうか?

### 1について

たとえばですが、httpRequestNodeの次に、何も記述のないfunctionNodeを配置すると、次へメッセージが伝達しないので、リセット処理が走りません。
活用してみてください。

### 2について

もし、templateNodeをお使いの場合は、jsonNodeを連結させると、文字列がJSONオブジェクトに変換できます。

## サンプルコード

試してみたものをこちらで共有したします。
ちょっと問題あるところだけ、*** 入力しています。

### スキルパックA
[{"id":"1b5f600602.836d48","type":"notification","z":"1ba0fa9422.0d3f68","name":"","version":1,"x":203.5,"y":154,"wires":[["1b463d869a.0aa9c8","1b67c2b44c.ab61bc"]]},{"id":"1b85d7a7c0.27ee78","type":"speech","z":"1ba0fa9422.0d3f68","word":"","subtitle":"","name":"","edit":false,"version":1,"x":597.5,"y":272,"wires":[[]]},{"id":"1b463d869a.0aa9c8","type":"function","z":"1ba0fa9422.0d3f68","name":"","edit":"","func":"msg.word = msg.data.message;\nreturn msg;","outputs":1,"dummy":"1","noerr":0,"x":382.5,"y":247,"wires":[["1b85d7a7c0.27ee78"]]},{"id":"1b67c2b44c.ab61bc","type":"debug","z":"1ba0fa9422.0d3f68","name":"","active":true,"console":"false","complete":"true","x":361.5,"y":108,"wires":[]}]

### スキルパックB
[{"id":"1be9576728.f6d668","type":"http request","z":"1bdf604268.ca527","name":"","method":"POST","ret":"obj","url":"https://distribution.unibo.info:16009/api/v1/distributions","tls":"","x":510.5,"y":230,"wires":[["1b493a2543.46306c","1b695d0613.b02be8"]]},{"id":"1b395dfe6a.badde2","type":"template","z":"1bdf604268.ca527","name":"","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"{\n\"targetSkillpackPackageName\": \"***\",\n\"user\": {\n\"identifier\": \"****\",\n\"password\": \"***\"\n},\n\"contents\": [\n{\n\"textMessage\": \"テスト\"\n}\n]\n}","x":254.5,"y":262,"wires":[["1b293a9bc.104fa64"]]},{"id":"1be66837ce.3c4488","type":"inject","z":"1bdf604268.ca527","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":143.5,"y":182,"wires":[["1b395dfe6a.badde2"]]},{"id":"1b493a2543.46306c","type":"function","z":"1bdf604268.ca527","name":"","edit":"","func":"\n","outputs":1,"dummy":"1","noerr":0,"x":719.5,"y":252,"wires":[[]]},{"id":"1b695d0613.b02be8","type":"debug","z":"1bdf604268.ca527","name":"","active":true,"console":"false","complete":"true","x":714.5,"y":159,"wires":[]},{"id":"1b293a9bc.104fa64","type":"json","z":"1bdf604268.ca527","name":"","x":345.5,"y":170,"wires":[["1be9576728.f6d668"]]}]

また、わからないことがあれば、なんなりとご質問ください。
#ID:7

回答者:アイエスピー(認定デベロッパー)
回答日:2017年12月05日

おかださん

ご回答ありがとうございます。
残念ながら状況は変わらずのままです。

>POSTMANで201 Createdであれば、API自体は正しく叩けているようです。
>同じ結果というのは、POSTMANでAPIを実行したときに、スキルパックBで発話がないということでしょうか?
はい。POSTMANでAPIを実行してもスキルパックBで発話がありません。
同じように外部のnode-redよりAPIを実行してもスキルパックBで発話がありません。
(どちらもStatusは201で戻ってきておりました。)

>2. スキルパックAのPayloadは、functionNodeではなく、templateNodeを使っており文字列として認識がされていませんでしょうか?
functionNodeにて実行しております。
サンプルで頂いたtemplateNodeパターンでも実行致しましたが同じ結果です。
(どちらもStatusは201で戻ってきているので、受け側に問題がありそうな気が…)

ちなみに通知を受ける際にuniboやルータ等に何か設定する必要とかはありますでしょうか。
(もしかしたら、ブロックされているのかと思いましたので…)

引き続き、ご教授お願い致します。
#ID:8

回答者:ユニロボット
回答日:2017年12月05日

まさのりさん

ご返信ありがとうございます。

>はい。POSTMANでAPIを実行してもスキルパックBで発話がありません。
>同じように外部のnode-redよりAPIを実行してもスキルパックBで発話がありません。
>(どちらもStatusは201で戻ってきておりました。)

再度手順を確認させてください。
1. サンプルコードをデプロイする
2. 配信ノードのデバッグボタンを押す
3. POSTMANからAPIを叩く

上記の手順をしても通知できないとなると、ポートが閉じているなどがある可能性があります。
その場合は、お手数ですが、別のネットワークでテストされるとどうなるかも見ていただいてよろしいでしょうか?

何度もすみませんがよろしくお願いいたします。
#ID:9

回答者:アイエスピー(認定デベロッパー)
回答日:2017年12月06日

おかださん

ご回答ありがとうございます。

>再度手順を確認させてください。
>1. サンプルコードをデプロイする
>2. 配信ノードのデバッグボタンを押す
>3. POSTMANからAPIを叩く
結果、通知できない状況でした。
ポートが遮断されている可能性があるので、以下に記載されているポートの
解放を行いましたが、状況は変わりませんでした。

【ユニボストア】→【マイページ】→【ユニボ】※使用プロトコル・ポートについて

こちらの環境に問題がありそうですので、引き続き調査したいと思います。
原因がわかりましたら、ご連絡いたします。
(来週に別のネットワーク環境が使用できますので、そちらでも確認してみます。)

よろしくお願い致します。
#ID:10

回答者:ユニロボット
回答日:2017年12月06日

まさのりさん

こちらでも引き続き原因を調べてみます。

また、ネットワークを切り替えてのテストを実施されましたら、お手数ですが結果を教えてください。

よろしくお願いいたします。
#ID:11

回答者:アイエスピー(認定デベロッパー)
回答日:2017年12月06日

おかださん

問題解決致しました。

原因はuniboを接続しているプロバイダの問題でした。
プロバイダは「ぷらら」をしているのですが、単純にポート開放だけでは
ダメらしく、ぷららネットバリアーベーシックと言うプロバイダ側で施されている
ファイヤーウォールを解除する必要がありました。

大変お騒がせしました。

通知ノードとは若干離れてしまいますが、一点ご質問させて下さい。
デバッグモードで通知ノードの確認が取れたので、スキルパックを作成して
実際の動作を確認しようとしているのですが、ユニボストアにUpした
スキルパックをインストールしようとするとエラーになってしまいます。

例えば、ユニボAのスキルクリエイターで作成したスキルパックはユニボAには
インストール出来ないのでしょうか。
(もしかして、スキルクリエーターから削除する必要がありますか)

ご教授、よろしくお願い致します。
#ID:12

回答者:ユニロボット
回答日:2017年12月06日

まさのりさん

配信ノードがうまく疎通できたとのことで、よかったです。
今回の事例は我々も大変勉強になりました。
ありがとうございます。

>例えば、ユニボAのスキルクリエイターで作成したスキルパックはユニボAには
>インストール出来ないのでしょうか。
>(もしかして、スキルクリエーターから削除する必要がありますか)

なお、上記の質問ですが、ユニボは作成したスキルパックと同様のものがすでに入っていると、インストールすることはできません。
厳密にいいますと、作成したスキルパックは、タブ毎に固有のID(フローID)を持っております。
このフローIDが同じものは同じスキルパックとしてみなしており、インストール時に重複チェックをしております。
ですので、一旦作成したスキルパックと同じものを、作成したユニボにインストールする場合は、スキルパックのタブを削除するか、別のタブにコピーするなどしてください。
そうした上であれば、インストールできると思います。
#ID:13

回答者:アイエスピー(認定デベロッパー)
回答日:2017年12月06日

おかださん

ご回答ありがとうございます。

>なお、上記の質問ですが、ユニボは作成したスキルパックと同様のものがすでに入っていると、インストールすることはできません。
>厳密にいいますと、作成したスキルパックは、タブ毎に固有のID(フローID)を持っております。
>このフローIDが同じものは同じスキルパックとしてみなしており、インストール時に重複チェックをしております。
>ですので、一旦作成したスキルパックと同じものを、作成したユニボにインストールする場合は、スキルパックのタブを削除するか、別のタブにコピーするなど>してください。
>そうした上であれば、インストールできると思います。
ご教授して頂いた通り、別のタブに移動してインストールを行ったところ、正常にインストール完了致しました。
ありがとうございました。

よろしくお願い致します。
#ID:14

回答者:ユニロボット
回答日:2017年12月07日

まさのりさん

うまく出来たとのこと良かったです。

もし、こちらで解決であれば、解決済みとしていただいてよろしいでしょうか?

今後とも、よろしくお願いいたします