見出し画像

【夏期学習】DEJIRENチャットからバッチスクリプトを起動しWebAPIを実行してみよう!

お盆の期間、私は夏季休暇をいただいておりますが、皆さまは如何お過ごしでしょうか?なかなか外に出来るのが難しいところではありますが、身体にお気をつけてお過ごしください。

さて、本日の #データ活用の日  【夏期学習】と題し、「DEJIRENチャットからバッチスクリプトを起動しWebAPIを実行する」を載せてみますね。
見出し、迷いました。「DEJIRENチャットからPDF帳票をダウンロードしてみよう」にするか、、、今回チャレンジするのはこれです。
と言っても、ざっくり書いてみます。(文が苦手なので結構冗長的です)
「こういう事が出来るんだ!」や「あ、何かこの業務に使えるかも?」など
皆さまのカイゼンヒントになれば幸いですm(__)m

DEJIRENってなに?

Webサイトには下記のようにあります。

人とシステムを"コミュニケーション"でつなぐプラットフォーム

う~ん、もちょっとざっくり書くと、「チャットから何かつぶやくと、繋がっている何かを動かして、データ活用できるプラットフォーム」みたいな。
最近、「ノーコード/ローコード」ってキーワード聞いたことあります?
非エンジニアの方でもプログラムを書かず(または少しだけ書く)、他サービスと接続できたり、データを読み書きできたりのサービス総称です。
DEJIRENもそんな感じと思ってください。
例えば、チャットから”入居率”と打つとMotionBoard Cloudからシングルデジタルのイメージ画像を取得したり、”価格表”と打つとSPA Cloudから検索して価格表のPDFダウンロードしたり、そんなことが出来ます。
本日はあえて”少しだけ書く”にチャレンジしてみようと思います。

レッツチャレンジ

下記内容を作ってみます!

DEJIRENチャットにつぶやく→”少しだけ書いた”バッチスクリプトを動かす→MotionBoard Cloud(以下、MBC)のレポート配信タスクを動かす→SVF Cloud(以下、SVFC) でPDFが生成されダウンロードする

完成イメージ

下図が全体概要図です。全体概要図

以下に補足説明しますが、分かる方は読み飛ばしてください。

DEJIRENアクションフロー(図:左上)
DEJIRENではブロックの繋がりを作り、それをアクションフローと呼んでます。その特長の1つに、『外部プログラム』を実行する機能を備えてます。『外部プログラム』とは、DEJIRENで直接接続できていないサービスに対し特定の処理をさせるもの、とでもお考えください。
例えば、”特定のファイルを別フォルダーに全部コピーして"等の処理とかでもOKです。バッチスクリプト(図:下)とはWindows上で実行できる『外部プログラム』の1種です。RPAバッチを動かす、や、dataspiderrバッチを動かす等の利用方法もあります。今回、MBCに対して処理を行います。
(バッチ=Batch=一括、スクリプト=簡易なコンピュータプログラム)

DEJIRENブリッジクライアント(図:左下)
『外部プログラム』を動かすには、それらが存在するPCまたはサーバーに『ブリッジクライアント』を入れておく必要があります。
DEJIRENのクラウドサービスと手元にある『外部プログラム』の場所を繋ぐもの(ブリッジするもの)です。

MBCのWebAPI(図:下→右上)
『WebAPI』を調べると下記のような内容がヒットします。

WebサーバーまたはWebブラウザー用のアプリケーションプログラミングインターフェイスです。
API(Application Programming Interface)とは、サービスのデータを外部のアプリケーションやプログラムから扱うための機能を提供するインターフェースです。中でも、HTTP通信によってやりとりを行うAPIをWeb APIといいます。

なんのこっちゃ。MBCを例にざっくり言うと、「MBCの画面操作を外部から実行できる」と、そんな感じです。何が良いかというと、画面触らず実行できる!(そのまんまやんけ)。うーんと、何かをトリガーに自動実行できるってことです。
MBCでは、「ファイル操作」「タスク操作」「データストレージへ書き込み」「ユーザー情報の登録・更新・削除」など。これらを1回1回画面を開かずに、一括処理が出来るという事です。サーバー運用管理者たちは使いこなしている方も居るはずでは?

MBCタスク設定とSVFレポート出力(図:右上)
MBCには、ボードやチャートをPDFファイルなどに変換してメールで配信する機能が用意されています。この機能を「タスク」と呼びます。
そのタスクに「レポート配信」があります。これは、EXCELレポートやpowerpointレポート、そして、SVFレポートを配信する機能です。
今回あえて、SVFレポートのタスクを実行してみたいと思います。
(SVFをよくご存じのnestメンバーも増えてきて嬉しい限りなので)
因みに、MBCタスク設定>配信設定のPDF出力ではボード上イメージのまま出力されますが、SVFC連携では帳票形式のPDFで、繰り返し分割(検索キーで分割)しメール配信などできます。
今回の設定ではメール配信せずMBC共有フォルダーに保存してみます。

MBCとSVFCの連携設定については下記facebok(nestグループ)ご参照

準備する材料

・スマホ(DEJIRENチャットのクライアント)
・DEJIRENブリッジとバッチスクリプトを入れるPC
DEJIREN
・MotionBoard Cloud+SVF Cloud (今回は左記プロダクトを使いますが、WebAPIを利用できるSaaS等であれば何でもよいです)
・メモ帳などテキストエディタ(バッチスクリプトを作成)
・実行できる管理権限(注)
  ブリッジをインストールできるOSの管理者権限
  バッチスクリプトを実行できるOSの管理者権限
  WebAPIを実行できるMBCの管理者権限

注:外部から一括で処理できるということは、ある意味プログラムかける人ならば何でもできちゃうのです。なので、権限がある人でなければならない、という事ですね。

作り方

ある程度3分クッキング形式(あらかじめ用意)で記載します。

1.MBCとSVFCでSVFレポートを作る
MBCご利用の方は下記ボードパスにSVFレポートのサンプルボードがありますのでご覧ください。左下がボタンですが、SVFCと繋いでないと動きません、あしからずm(__)m
/Sample/jp/機能別サンプル/5.7/SVFレポートサンプル(複数の出力データを利用する)

画像2

仮にSVFC接続出来たとして、ボタン実行すると・・・PDF↓が出力されます。

画像3

タスク設定>レポート配信設定では下図設定を。
SVFレポートを実行すると共有フォルダーに保存される内容です。

画像4

2.バッチスクリプトでWebAPIを実行する
お待たせしました、WebAPIを使ってみます。DEJIRENがなくとも、OSとMBCの管理者権限があれば一緒にお試し頂けます。(MBCの内容で記載しますm(__)m)
 前半:WebAPIの話
 後半:バッチスクリプトの話
分けて書きます。

前半:WebAPIの話

マニュアルは、MotionBoardの管理>WebAPIリファレンス>第1~3章です。
今回は、SVFレポートのタスクを動かすので「3-2 タスク操作のWebAPI > 配信タスクの開始」を参照します。

マニュアルにはHTMLサンプルコードが記載されてますね。以下です。実は私、Webプログラムは苦手なんです。実際、前職SIerでしたが業務用開発で使って事がなかったので。備忘録含めて補足記載しますが、ご存じの方は読み飛ばしてください。では、順を追って記載します。

 <form enctype="application/x-www-form-urlencoded" method="post" action="http://example.com:8787/motionboard/rest/report/task/start/webapisample/Managerboard/TaskReport001" accept-charset="UTF-8">
       Tenant ID:<input type="text" name="tenant" /><br />
       User ID  :<input type="text" name="id" /><br />
       Password:<input type="password" name="pw" /><br />
       <input type="submit" value="submit" />
 </form>

まず、マニュアル第2章には以下記述があります。

Web APIを利用するには、MotionBoardサーバーへのURLと、Web APIごとのリソースURIを組み合わせたリクエストURLを作成して、MotionBoardサーバーにアクセスします。

MotionBoardサーバーへのURL
上記例のHTMLサンプルでは、1行目のaction=のダブルクォーテーション(")で括った箇所のことです。

画像5

<リソースURI>の説明

Web APIごとのリソースURIです。リソースURIは、「rest/」を冒頭に含めて指定します。各Web APIのリソースURIは、「第3章 Web APIの一覧」で確認できます。

とあります。HTMLサンプルの1行目action=のrestの箇所を下記のように書くという事です。

画像7

さらに、第2章には下記も書いてます。

Web API共通のパラメーターとは

ここでは、Web API共通のパラメーターについて説明します。
大文字と小文字を区別して指定してください。POSTメソッドに対応しています。

画像6

POSTメソッドとは、”MBCに〇〇する為の情報を渡しなさい”の意味です。
上図ではMBCにテナントIDとユーザーIDとパスワードを渡す値のことを共通のパラメーター記載してます。それがHTMLサンプルの2行目~4行目のことです。認証情報です。

Tenant ID:<input type="text" name="tenant" /><br />
User ID :<input type="text" name="id" /><br />
Password:<input type="password" name="pw" /><br />

このサンプル、私みたいなWebプログラム苦手な人がそのまま使うとハマります。実際には下の太字のvalueにお客様の環境ごとの情報が必要です。

Tenant ID:<input type="text" name="tenant" value="テナントID"/><br />
User ID :<input type="text" name="id" value="MBCの管理者ID"/><br />
Password:<input type="password" name="pw" value="MBC管理者のパスワード"/><br />

ということで、サンプルのaction=の後ろだけを書き直すと下記です。
 ボードパス(ボード名含む):/api/SVF_REPOART
 タスク名:task_1

画像8

https://cloud-up.motionboard.jp/motionboard/rest/svf/task/start/api/SVF_REPOART/task_1

後半:バッチスクリプトの話

Windowsで使える『外部プログラム』の事で拡張子が.batのファイルです。
例えば、メモ帳で下図の1行書いたとしましょう。これをa.batとして保存し、ダブルクリックで実行すると、

画像9

D:\15_DEJIREN_TESTというフォルダーに存在する”A.txt”をコピーして、"B.txt"が作成されます。これがバッチスクリプトの実行結果です。
このバッチスクリプトでは、先程のHTMLサンプルそのものを直接実行する事ができません。(たぶん)
どうするかというと、curlなるコマンドを使い、HTMLサンプルに記載あるURLを実行することで解決です。まずはバッチスクリプトを図示します。

画像10

curlの後ろに-Fがあります。これが引き渡す情報=POST情報です。

上図ではPOST情報を書いてません。お客様環境に合わせて書く個別情報となります。

 実際は、"tenant=お客様のテナントID"のように書きます。
その後ろにMotionBoardサーバーへのURLを書いて終わりです。
引き渡す認証情報が間違っていなければ、このバッチスクリプトをダブルクリックするだけでMBC側のタスクを実行できます。

長かったですが、WebAPIというのはWebサービス(例:MBC)に対し処理を行う手続きの事、それをバッチスクリプトで書く際はcurlコマンドを使うの2点です。

参考まで、MBC共有フォルダーに作成されたPDFをダウンロードするバッチスクリプトサンプルを載せておきます。
共有フォルダーWAのmbc_svf_repoart.pdfをget(ダウンロード)しなさいというWebAPIを記述してます。
-O(大文字オー)が”ファイルダウンロードしなさいよ”のおまじないと思ってください。

curl -F "tenant=" -F "id=" -F "pw=" -O https://cloud-up.motionboard.jp/motionboard/rest/file/get/sharedfolder/WA/mbc_svf_repoart.pdf
上図ではPOST情報を書いてません。お客様環境に合わせて書く個別情報となります。

3.DEJIRENの環境を準備する

基本概要は下図の感じです。今回のケースでは右上コネクタで【プログラム実行】を行います。(直にMBCやSPACに接続できますが、今回はあえてそのコネクタを使っていません)

画像11

夏期学習内容では下図が概要図となります。(以下、設定順に記載)
・右下:ブリッジの設定
  バッチのあるPCにインストールするだけ
・左下:チャットルームと紐付くボット作成
  ボット名を決めるだけ
・上:アクションフロー 
  1つめブロックで【プログラム実行】を指定するだけ
  2つめのブロックはチャットに戻り値を返すだけ

画像12

画像13

上図アクションフローでは、【プログラム実行】でタスク配信のバッチスクリプトを1つ動かしています。それでSVFレポートのタスクが実行され、PDF帳票が作成されます。
更にもう1つブロックを作り、【プログラム実行】でダウンロードのバッチスクリプトを動かすようにすれば、PDF生成後にダウンロードも可能です。

4.チャットからバッチスクリプトを動かす
最後にチャットルームから呟いて確認です。MBC共有フォルダーにPDFが生成されるのを確認できたらOKです。
アクションフローでは、呟いた入力文字を分析・抽出し、処理を分岐する事も可能です。
(本ケースでは分析・抽出していないため、どんな呟きでもバッチが動く)

画像14

ここに記載したバッチスクリプトやアクションフローのサンプルでは単純に簡略化しています。本来は運用を考慮した記述やアクションフローの設定が必要です。
また、ざっくり記載のため、厳密な表現になっていない箇所もあります。



WebAPIを実行するバッチスクリプトを作成し、それをチャットから動かす
【夏期学習】如何でしたでしょうか?何かのお役にたてれば、何かの業務のカイゼンキッカケにでもなれば幸いです。

まさかの6000字オーバー。。。

この記事が気に入ったらサポートをしてみませんか?