こんにちは、こんじろーと申します
今回は、今まで学習したことを使って簡単なチャットボットをプログラミングで作ってみたいと思います
はじめに
この記事では、私がC#を使用してチャットボットを作成した方法について紹介します
イメージはカフェのお問い合わせシステムのようなものを作成します
今流行りのチャットGPTのように
なんでも答えてくれるチャットボットを作るのはもちろん無理なので
とても簡単なものになります
ユーザーが何を知りたいかを考える
まずは、カフェのお問い合わせシステムを使うとき
ユーザーの方が何について知りたいかを考えていきましょう
ある程度、ユーザーが何を聞きたいのかを予想して作らないといけません
練習として作るので、とりあえず5つくらいの質問に答えるようにしようと思います
1つ目は、営業時間について
2つ目は、メニューについて
3つ目は、予約について
4つ目は、お店の場所について
5つ目は、だいぶ落ち着いてきましたが、コ〇ナの影響で店内で食事はしたくないのでテイクアウトについて知りたいユーザーがいるかも知れません
テイクアウトについても加えましょう
とりあえずこの5つのお問い合わせに対応できるチャットボットを作ろうと思います
ユーザーの入力を受け付け、応答を返す機能
チャットボットなので、ちゃんと会話しているように作りたいので
まずはこちらから問いかけるようにします
これで、こちらから問いかけユーザーからの入力を待ちます
ユーザーからの入力をできるようにし、さらにif文を使って質問に対して応答できるようにしていきます
このような感じでif文を使ってユーザーからの入力に応答するようにします
これにもう少し肉付けしていきます
if文の{}の中にif文を書いたりしていて少しごちゃごちゃしてしまいました汗
関数について
関数とはメソッドとも呼ばれています
自作で関数と呼ばれるコードのブロックを定義して、必要な時に呼び出す事ができます
以上のように何度も使うコードを関数にまとめて、関数名を書くことで呼び出すことができます
今回は、文字数が少ないですが、もっと文字数が増えたり
コードが長くなると何回も書くのは面倒ですし
何よりごちゃごちゃして見にくくなるので関数を使いこなしてスマートにプログラミングしていきましょう笑
部分一致
今のコードでは、何が知りたいですか?と聞かれ
「営業時間について」や「メニューについて」など完全一致しないとif文の中に入ってくれません
そんな時にContainsメソッドを使用すると「営業時間」や「メニュー」など、引数に指定した文字列と部分一致するとtrue、一致しない場合はfalseが返されるようにすることができます
文字列.Contains(検索文字)
コードを変更していきます
部分一致でif文の{}の中に入ってくれました!
仕上げ
最後にもう少しだけ手を加えます
今のままでは一回しか質問できないので
こちらが「知りたいことはありますか?」と問いかけて「いいえ」と入力されるまで繰り返すようにWhile文でプログラミングしていきます
部分一致しなかった時は、else文で他のキーワードを入力してもらうようにして
「いいえ」が入力されたら、While文の{}の外に出るようにして
終了するようにプログラミングして完成です!
まとめ
少し長くなりましたがコードはこんな感じです
かなり長くなりました汗
実行すると、、、
他の動作も確認しましたが問題なく実行できました!
最後まで読んでいただき、ありがとうございました
では、また!