対話型のBotを作成するとき、入力を受け付ける手段としては「プロンプト」パッケージが用意されています。入力項目が少ない場合であれば、「プロンプト」パッケージでもいいのですが、入力項目が増えてくると独自の入力フォームが欲しくなることがあります。また、入力項目にパスワードがあるような場合、「プロンプト」パッケージの[Mask keystroke]機能が イマイチ なので、断然、独自の入力フォームが欲しくなります。
ここでは、Windows Formを表示して入力を受け付けるPowerShellスクリプトをBotから実行して、入力内容を取得する処理を紹介します。

処理の分担とデータ入出力の流れ

Task BotとPowerShellスクリプトの処理分担と、データがどのように流れるかを下図に示します。

ここで紹介しているBotのデモ動画は こちら で参照できます。

PowerShellスクリプトのアップロードとパス定義手順

ここでは、Control RoomにアップロードしたPowerShellスクリプトを実行する仕様にしたいので、まず、PowerShellスクリプトをControl Roomにアップロードする手順を説明します。

(1)PowerShellスクリプトのアップロード

ローカルフォルダに作成したPowerShellスクリプトファイル「PSS_000101_InputMemberInformation.ps1」をControl Roomにアップロードします。
PowerShellスクリプトファイルのアップロード先フォルダとして、あらかじめ「Bots\Blog\Script\Script_PowerShell」を作成しています。(フォルダの作成手順は省略します。)

[ファイルをアップロード]ボタンをクリックします。



[ファイルを追加]ボタンをクリックします。



ローカルフォルダに作成したPowerShellスクリプトファイルを選択して[開く]ボタンをクリックします。



[アップロード]ボタンをクリックします。



これでアップロードは完了です。


(2)パス定義

Control RoomにアップロードしたPowerShellスクリプトへのパスをファイル型変数に設定します。

[変数を作成…]ボタンをクリックします。



[名前]、[タイプ]を入力したら、[デフォルト値]に[Control Roomファイル]を選択して、[参照]ボタンをクリックします。



Control Roomのフォルダを展開して該当ファイルを選択して、[確認]ボタンをクリックします。



これで変数定義は完了です。

Task Botの作成

(1)アクションリストの全体概要
下記がアクションリストの全体概要です。PowerShellスクリプトの呼び出しには、「Python script」パッケージを利用しています。アクションの詳細設定内容については、(2)以降で、「Python script」パッケージのアクション(5, 7行目)のみに限定して説明します。



(2)Pythonスクリプトをインラインで定義

「Python」パッケージの「Open」アクション

【詳細設定】
[Manual input]を選択して、[Enter script here]に関数「inputProfile」を定義しています。筆者の環境にはPython2.7をインストールしているので、[Python runtime version]は「2」を選択しました。

【Pythonスクリプト詳細】

関数「inputProfile」は、引数「ScriptFilePath」でPowerShellスクリプトへのパス情報を受け取る仕様にしています。


(3)Pythonスクリプトの関数実行

「Python」パッケージの「Execution function」アクション

【詳細設定】
[Enter name of function to be executed]に関数名「inputProfile」、[Arguments to the function]にファイル型変数「F_PSS_000101」を設定しています。



PowerShellスクリプト詳細

以下のコードで動作確認をしましたので、参考情報として掲載しておきます。

【余談】

今回は、subprocessモジュールを使ってPowerShellスクリプトを呼び出しましたので、実行したPowerShellが終了するまで7行目から次のアクションに進むことはありませんでした。


[目次]

Pin It on Pinterest

Share This