LoginSignup
11
6

More than 1 year has passed since last update.

【 LINEBot 】この「漢方薬」が「どんな症状に効くのか」教えてくれませんか? 【 GoogleSpreadSheetAPI 】

Last updated at Posted at 2021-07-31

登録販売者の苦悩

登録販売者とは
かぜ薬や鎮痛剤などの一般用医薬品(第2類・第3類に限る)販売を行うための専門資格のこと。

私も登録販売者として5年間くらい勤めてきましたが、どうにも「漢方薬」が苦手でした
全て漢字で書かれているので覚えるのが大変です。(葛根湯くらいなら馴染みがあると思いますが)

作成した動機

自分が苦手だった「漢方薬」の効果・効能を覚えるために単語帳として思いついたものが
今回作った「汎用型FAQBot」になります。

ラインに漢方薬の名前を打ち込むことで、その効果・効能を表示してくれます。

意図しない付加価値

Google SpreadSheet をデータベースのように扱うため、使用目的が限定されず再利用できそうです。
また、Google SpreadSheet を編集するだけで内容を変更出来るので誰でも利用できる点も良いかと思います。

動作見本

qiita_01_01_改.gif

動作の流れについて

image.png

使用したアプリケーション

・LINEBot
・Node-RED
・JavaScript
・Google SpreadSheet API
・Google SpreadSheet

Node-RED 全体構成

nodered_01_01.PNG

Node-RED 各ノード詳細

「http in」ノード:ラインサーバーから送信されたメッセージを取得 
nodered_01_02.PNG
「function」ノード:受け取ったメッセージを格納
function1.JPG

// LINEサーバーからの情報を「msg.line」に移動させる
msg.line = msg.payload;
// msg.payloadにメッセージ本体を入れる
msg.payload = msg.payload.events[0].message.text;

return msg;

「G Sheet」ノード:Google SpreadSheet API を使って予め用意した Google SpreadSheet から情報を2次元配列として取得
nodered_01_04.PNG
「function」ノード:受け取った2次元配列を格納したメッセージと突合させて条件に合致したものをメッセージとして代入する
function2.JPG

// msg.payloadの中にはスプレッドシート内容(2次元配列)が入っている
// 行ごとに、その行の1列目の文字がmsg.line.events[0].message.textと等しいかチェック
// もし等しければその行のインデックス数値が得られる(なければ-1)
const index = msg.payload.findIndex(rows => rows[0] == msg.line.events[0].message.text);
// 返信する言葉
let resultMessage = "見つかりませんでした";
// もしアイテムの単語が見つかればその説明文を返信する言葉に上書きする
if (index != -1) {
  resultMessage = msg.payload[index][1];
}
// 返信する言葉を代入し、payloadに戻す
msg.line.events[0].message.text = resultMessage;
msg.payload = msg.line;
return msg;

「ReplyMessage」ノード:メッセージをラインサーバーに返信
nodered_01_06.PNG

作成所感

登録販売者の現役の方に感想を聞いたところ、お客さまの立場からであればこのままで良いが
登録販売者側が使うとしたら「症状からどんな薬がお勧め出来るか」を知れると良いとのことでした。
この制作物の最も優れた点は、Google SpreadSheet を API で参照しているので
使用者側で容易にカスタマイズ出来るという点だと考えています。

11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6