コンテンツにスキップ

フロー分割サンプル

フローを分割して作成する場合のサンプルとなります。良いパターンと悪いパターンの2パターンの確認が出来ます。

また、このサンプルは3つのフローを作成しますので少し設定が大変です。ほかのサンプルフローで慣れてからお試しください。

サンプルフロー(振り分けフロー)


[{"id":"6e5e3b96.ce7a84","type":"tab","label":"振り分けフロー","disabled":false,"info":""},{"id":"6a70fac.0ff9f04","type":"slack-webapi","z":"6e5e3b96.ce7a84","name":"","token":"","channel":"","channelType":"str","class":"postMessage","posttext":"送信しました。","posttextType":"str","posticon":"","posticonType":"str","attachments":"","attachmentsType":"str","file":"","fileType":"str","filename":"","filenameType":"str","filetype":"auto","filetypeType":"str","filecomment":"","filecommentType":"str","x":960,"y":180,"wires":[]},{"id":"cfec23fc.ce3dc","type":"slack-rtmapi","z":"6e5e3b96.ce7a84","name":"","token":"","channels":"","events":["message"],"x":100,"y":200,"wires":[["dd154658.f249a8"]]},{"id":"9468f8ba.b2f7f8","type":"switch","z":"6e5e3b96.ce7a84","name":"","property":"payload.text","propertyType":"msg","rules":[{"t":"regex","v":"じゃんけんして","vt":"str","case":true},{"t":"regex","v":"サイコロ振って","vt":"str","case":true},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":550,"y":180,"wires":[["f3ebe550.ea3bf8"],["8ddeb6e5.b3ac88","a23f5514.84d768"],["29974cb.321c3b4","a23f5514.84d768"]]},{"id":"f3ebe550.ea3bf8","type":"http request","z":"6e5e3b96.ce7a84","name":"じゃんけんを実行","method":"GET","ret":"txt","paytoqs":false,"url":"https://demo0001.stg-robostein.io/api/execA","tls":"","proxy":"","authType":"basic","x":750,"y":140,"wires":[["a5f27ca1.2c95f","a23f5514.84d768"]]},{"id":"29974cb.321c3b4","type":"corobo-log","z":"6e5e3b96.ce7a84","name":"","event":"info","customevent":"","payload":"フロー実行以外のメッセージを受信しました。","payloadType":"msg","x":720,"y":340,"wires":[]},{"id":"dd154658.f249a8","type":"switch","z":"6e5e3b96.ce7a84","name":"botからの返信は対象外","property":"payload.bot_id","propertyType":"msg","rules":[{"t":"neq","v":"BJLC0RJJ3","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":330,"y":200,"wires":[["9468f8ba.b2f7f8"],["a23f5514.84d768","29974cb.321c3b4"]]},{"id":"a5f27ca1.2c95f","type":"debug","z":"6e5e3b96.ce7a84","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":950,"y":140,"wires":[]},{"id":"8ddeb6e5.b3ac88","type":"link out","z":"6e5e3b96.ce7a84","name":"サイコロ実行フローへ","links":["cd1ad750.c79028"],"x":675,"y":180,"wires":[]},{"id":"a23f5514.84d768","type":"corobo-trigger","z":"6e5e3b96.ce7a84","name":"","status":"1","statusType":"num","x":980,"y":340,"wires":[]},{"id":"2af2da0a.fb6966","type":"e-mail","z":"6e5e3b96.ce7a84","server":"smtp.gmail.com","port":"465","secure":true,"tls":true,"name":"","dname":"","x":950,"y":220,"wires":[]},{"id":"7987e9e3.1abd38","type":"comment","z":"6e5e3b96.ce7a84","name":"振り分けフローサンプル","info":"このサンプルはSlackに投稿された\nメッセージ内容によって振り分け、別のフロー\n呼び出すサンプルとなっています。\n\n「じゃんけんして」だとじゃんけんを実行\n「サイコロ振って」だとサイコロを振りますが\n実装の仕方に違いがあります。\n\n履歴を見ると明らかですが、リンクノードでの連携\nの場合、フローの実行履歴が表示されません。\n従ってフローの連携をおこないたい場合、\n「じゃんけんを実行」の実装方法を参考にしてください。\n","x":150,"y":60,"wires":[]}]

サンプルフロー(じゃんけんを実行フロー)


[{"id":"94fafee9.959c8","type":"tab","label":"じゃんけんを実行","disabled":false,"info":""},{"id":"d76d13f9.ae4e6","type":"http in","z":"94fafee9.959c8","name":"","url":"/execA","method":"get","upload":false,"swaggerDoc":"","x":120,"y":140,"wires":[["167ae20c.68ebce","b89cfcf3.5e3e1"]]},{"id":"167ae20c.68ebce","type":"http response","z":"94fafee9.959c8","name":"","statusCode":"","headers":{},"x":330,"y":140,"wires":[]},{"id":"b89cfcf3.5e3e1","type":"random","z":"94fafee9.959c8","name":"","low":"1","high":"3","inte":"true","property":"rnd","x":340,"y":200,"wires":[["7464a1b5.916b8"]]},{"id":"7464a1b5.916b8","type":"change","z":"94fafee9.959c8","name":"","rules":[{"t":"change","p":"rnd","pt":"msg","from":"1","fromt":"num","to":"グーでした","tot":"str"},{"t":"change","p":"rnd","pt":"msg","from":"2","fromt":"num","to":"パーでした","tot":"str"},{"t":"change","p":"rnd","pt":"msg","from":"3","fromt":"num","to":"チョキでした","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":200,"wires":[["693f634c.25716c","175a8214.eb422e","65148237.7da42c"]]},{"id":"693f634c.25716c","type":"slack-webapi","z":"94fafee9.959c8","name":"","token":"","channel":"","channelType":"str","class":"postMessage","posttext":"rnd","posttextType":"msg","posticon":"","posticonType":"str","attachments":"","attachmentsType":"str","file":"","fileType":"str","filename":"","filenameType":"str","filetype":"auto","filetypeType":"str","filecomment":"","filecommentType":"str","x":740,"y":200,"wires":[]},{"id":"175a8214.eb422e","type":"corobo-trigger","z":"94fafee9.959c8","name":"","status":"1","statusType":"num","x":760,"y":260,"wires":[]},{"id":"65148237.7da42c","type":"debug","z":"94fafee9.959c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":730,"y":140,"wires":[]},{"id":"49f63c78.261494","type":"comment","z":"94fafee9.959c8","name":"振り分けフローからのフロー実行(良い例)","info":"振り分けフローから別のフロー(このフロー)を\n呼び出す意味として、管理のしやすさが上げられます。\n振り分けフロー内で複数の処理を実行してしまうと\n何の処理をしたかが実行履歴から追うのがとても\n大変になります。(詳細ログからしか判断が出来ない)\n\nそこで、このようにトリガー内容から振り分けるフローと\n実行のフローをわけると実行履歴が別々となり\nなんの処理が実行されたかわかりやすくなります。\n\n","x":200,"y":60,"wires":[]}]

サンプルフロー(サイコロを実行フロー)


[{"id":"f1b3161e.2f02d8","type":"tab","label":"サイコロを実行","disabled":false,"info":""},{"id":"86d61dd1.e6fb5","type":"random","z":"f1b3161e.2f02d8","name":"","low":"1","high":"6","inte":"true","property":"rnd","x":340,"y":160,"wires":[["1df2b230.a68f2e"]]},{"id":"a8e788e1.a4e088","type":"link in","z":"f1b3161e.2f02d8","name":"Bフロー","links":["179bfe3b.c14ad2"],"x":195,"y":160,"wires":[["86d61dd1.e6fb5"]]},{"id":"a2f77f19.eb02b","type":"debug","z":"f1b3161e.2f02d8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":730,"y":100,"wires":[]},{"id":"1df2b230.a68f2e","type":"change","z":"f1b3161e.2f02d8","name":"","rules":[{"t":"change","p":"rnd","pt":"msg","from":"1","fromt":"num","to":"1の目が出ました","tot":"str"},{"t":"change","p":"rnd","pt":"msg","from":"2","fromt":"num","to":"2の目が出ました","tot":"str"},{"t":"change","p":"rnd","pt":"msg","from":"3","fromt":"num","to":"3の目が出ました","tot":"str"},{"t":"change","p":"rnd","pt":"msg","from":"4","fromt":"num","to":"4の目が出ました","tot":"str"},{"t":"change","p":"rnd","pt":"msg","from":"5","fromt":"num","to":"5の目が出ました","tot":"str"},{"t":"change","p":"rnd","pt":"msg","from":"6","fromt":"num","to":"6の目が出ました","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":160,"wires":[["4ddcd5e6.64b1cc","fd7aa15a.ac628","a2f77f19.eb02b"]]},{"id":"4ddcd5e6.64b1cc","type":"slack-webapi","z":"f1b3161e.2f02d8","name":"","token":"","channel":"","channelType":"str","class":"postMessage","posttext":"rnd","posttextType":"msg","posticon":"","posticonType":"str","attachments":"","attachmentsType":"str","file":"","fileType":"str","filename":"","filenameType":"str","filetype":"auto","filetypeType":"str","filecomment":"","filecommentType":"str","x":740,"y":160,"wires":[]},{"id":"fd7aa15a.ac628","type":"corobo-trigger","z":"f1b3161e.2f02d8","name":"","status":"1","statusType":"num","x":760,"y":220,"wires":[]},{"id":"47b7a5ee.db5acc","type":"comment","z":"f1b3161e.2f02d8","name":"振り分けフローからのフロー実行(悪い例)","info":"振り分けフローから別のフロー(このフロー)を\n呼び出す意味として、管理のしやすさが上げられます。\n振り分けフロー内で複数の処理を実行してしまうと\n何の処理をしたかが実行履歴から追うのがとても\n大変になります。(詳細ログからしか判断が出来ない)\n\nただし、このようにリンクノードを利用したフローの\n分割では実行履歴のログとして出力されないため、\nこちらの方法はオススメできません。\n","x":200,"y":60,"wires":[]}]

上記を設置すると以下のようなフローが3つ新規に作成されます。

slack-botノード
slack-botノード
slack-botノード

設置後の設定

このままでは動作しませんので各フローについて以下の設定をおこなってください。

振り分けフローへの設定

  • slack受信の設定
    こちらを見て設定を済ませてください。

  • IPの許可
    restapiのサンプルフローでも記載した通り、デフォルトの状態では作成したAPIに関してIPは全て拒否状態となっているので自分自身へのIPの許可が必要です。
    IPの確認方法ですが、まず「RS」エージェント画面に行き、「実行コマンドを表示」というボタンをクリックします。
    すると「C:\rsagent\rsaginst.exe local -s xx.xx.xx.xx~」のような表示がされますので、このxx.xx.xx.xxのIPをコピーします。
    次に、ロボシュタインの管理画面から「インスタンス一覧」画面を開き、「編集」ボタンを押します。
    編集ボタンを押すと以下の画面が出てきますので、「APIアクセス許可IP」に先ほどのIPを設定してください。

  • 「じゃんけんを実行」と書かれたノードのURLの変更
    ロボシュタインの管理画面から「インスタンス一覧」画面を開き、「編集」ボタンを押します。
    編集ボタンを押すと以下の画面が出てきますので、「APIは下記URLとなります。」のURLをコピーします。
    restapi
    その後、フローエディター画面に戻り、「じゃんけんを実行」と書かれたノードのプロパティ画面を開きます。 「URL」の部分が https://demo0001.stg-robostein.io/api/execA となっているので、ここの「https://demo0001.stg-robostein.io」を先ほどコピーしたURLに変更し「完了」ボタンを押してください。 (/api/execAの部分は残します。)

以上で振り分けフローへの設定は完了です。

じゃんけんを実行フローへの設定

  • Slackへの送信
    Slackへの送信については こちらを見て設定を済ませてください。

サイコロを実行フローへの設定

  • Slackへの送信
    Slackへの送信については こちらを見て設定を済ませてください。

実行方法

設定したチャンネルから「じゃんけんして」や「サイコロ振って」とチャットすると、振り分けフローでslackを受信したのち、各実行フローが実行され、slackに結果が送信されます。
slack-botノード

解説

このサンプルフローでは受信部のフローと、実行部のフローを分けたサンプルとなっています。 例えばこの3つのフローを全て一つのフローとして作成することも可能なのですが、そうすると「実行履歴」が全て同一の名前になってしまいます。 従って「じゃんけん」が実行されたのか、「サイコロ」が実行されたのかという事がぱっと見ただけではわからない。という状況になります。(詳細を見ると判断はつきますが大変です。)

なのでこのサンプルフローのように受信のトリガーとしては一つだが、実行は複数に分かれ、かつその実行状況を履歴として残したい場合にこのサンプルフローのように受信部分と実行部分のフローをわけて作成することで管理しやすくなります。

サンプルでは実行のフローの呼び出し方法がhttp responseノードを利用したものとリンクノードを利用したものの2パターン作成しています。 動作を確認してもらうと特に動作に違いが無い事がわかるかと思いますが、コメントに記載の通り大きく違っている箇所があります。

それは、「実行履歴」となります。http responseノードを利用した場合は実行履歴にきちんと「じゃんけんで実行」のフローの実行履歴が残り、 「リンクノード」の場合は残りません。 従い、フローの分割をしたい場合はhttp responseノードを利用した分割をお勧めします。

slack-botノード

これを使って

このサンプルフローを参考にし、

  • 受信、振り分け部分と、実行部分を分けた管理をしたい場合
  • slackからサイコロを振りたい場合

など、パーツとしての利用やフロー作成の参考にしてください。