Bot

SecretaryBotがメディアで紹介されました

こんにちは!SecretaryBot開発チームのマサです!

SecretaryBotですが色々な方からご好評いただき、なんと!日本マイクロソフトの平野社長に「働き方改革」を促進するツールとしてご紹介いただきました。その際に様々なメディアにて紹介されていますので、ここで紹介させていただきます。

自分たちの作ったものがメディアに取り上げられるってすごいうれしいものですね。今は日本だけではなく、アメリカ、イギリス、ノルウェー、スウェーデン、フランス、イタリア、マラウイ(南アフリカ)、ロシア、インド、オーストラリア、韓国で使ってもらっているみたいです。

ワールドワイドで使ってもらうと「秘書が女性というのはステレオタイプだから、男性秘書も作ったら?」「ロシア語はサポートしないの?」などのフィードバックをもらって、改善のアイディアをいただけることも嬉しいです。フィードバックやバグの指摘は、真摯に受け止めて対応を進めます。

使ってみたい!という人はぜひ雇い方を見てみてくださいね。また、フィードバックもTwitterから是非お願いします!

それでは、よい金曜日、よい週末を!

Azure, Bot, 未分類

Botから検索できるようにする

こんにちは!SecretaryBot開発チームのマサです!この記事ではBotに検索機能を簡単に実装する方法を見ていきましょう。

Botと検索

Bot開発を続けていると、Botから検索をしたくなることがあります。例えば秘書ボットにレストラン予約機能を付ける場合、自分のデータベースから情報を検索できると便利ですよね。

そのため、Botに検索機能を付けたいのですが、自分で1から検索機能を作るのは面倒です。例えばですが、Database構築して、検索用のIndex作って、それをCallしやすいAPIを作ってとなるのですが、VMに環境インストールしたり自分でプログラム書いたりするのはダルイのでしたくないです(まぁ、やろうと思えばできるのですが、別にその分野のプロになりたいわけでもないし、メンテする時間あったらジム行ったり遊びに行きたいし)。

というわけで、Azureの検索サービスであるAzure Searchと、NoSQL DatabaseサービスのDocumentDBを使って下記のようなアーキテクチャで実現したいと思います。

“Botから検索できるようにする” の続きを読む

Azure, Bot, 開発

Bot に Azure AD 認証/認可を組み込む

こんにちは! SecretaryBot開発チームのマサです!今回はBotにAzure ADの認証/認可機能を埋め込む方法を解説します。

Botをある程度作りこんでくると、外部のAPIと連携したくなることがあると思います。僕らの場合にはOffice 365のデータを読み書きしたかったので、Microsoft Graph APIと連携したくなりました。Microsoft Graph APIをCallするためにはAzure ADでの認証/認可が必須なので、この記事ではBotにAzure ADの認証/認可を実装する方法を紹介します。

“Bot に Azure AD 認証/認可を組み込む” の続きを読む

Bot, 開発

複数の話題を扱えるBotを作る

SecretaryBotチームのマサです!今回は複数の話題を扱えるBotを作っていきましょう!

前回の記事では、Dialogを使って連続した会話を実装することができました。ただ、現時点では1つの話題しか扱えません。今回は複数の話題(飛行機予約、ホテル予約)を扱えるBotを作っていきましょう。

今回もサンプルを作成しているので、動作を見たい人は動かしてみてください。ちなみに[Book Flight]ボタンからクリックしてください。

“複数の話題を扱えるBotを作る” の続きを読む

Bot, 開発

Dialog を使った”会話”の実装

こんにちは SecretaryBot チームのマサです。

A’の一問一答Botの開発という投稿で、Bot の基本的な開発方法は分かったかと思います。ただ、「一問一答」と明記されている通り、MessageControllerだけでは”会話”の実装がやりづらいです。実際に作っていただくとわかるのですが、Q1にはA1、Q2にはA2と回答できますが、以下のような連続した会話の実装が難しいんですね。

  1. (Bot) あなたの名前は?
  2. マサです
  3. (Bot) 教えてくれてありがとうマサ。何がしたいですか?
  4. 明日のミーティングの設定がしたいです
  5. (Bot) 明日のミーティングですね。誰とですか?
  6. … 以下続く…

上記に加えてBotが複数の話題 (ミーティング設定、天気を教えてくれるなど)を扱えるように実装しようとすると、複雑怪奇な if文、switch文を書いて、会話状態をキャッシュするような機構を作る必要があって辛いです。。

せっかくフレームワークを使っているので、その良さを活かしちゃいましょう!

“Dialog を使った”会話”の実装” の続きを読む

未分類

Bot Framework 概要と好きなところ

こんにちは、SecretaryBot開発チームのマサです。今回は僕らが普段使っている Bot Framework の概要と好きなところを紹介します!

Bot Framework とは

Bot Framework は Microsoft が提供している Bot 開発用のフレームワークです。

Microsoftのgithub では以下のような画像で説明されてますが、最初見たときはよくわかりませんでした。なぜかというと、普段使っているフレームワークが「Webアプリ開発のためにMVCを分けてコードを書く」みたいな感じだったので、「フレームワーク = なんらかのルールに従ってコード書く枠組み」という先入観があったからです。一方で、Bot Framework の場合には SDK もあるし、Portalもあるし、Connector もあるし、Directoryもある。。うむむ

そのため、このブログでは自分なりの解釈で説明しますね。

Bot Framework とは開発者がBotを開発しユーザーに届けていくまでをサポートするフレームワークです。そのため、Bot Framework は主に以下の要素から出来上がっています 。それぞれ書き始めるときりがないので、ここでは概要を説明して、詳細はそれぞれの記事で開設予定していきます。

  • Bot Connector : Bot を Slack, Skype などの色々なチャネルに接続してくれます。これが便利な理由は主に3 つ 。
    1. 各チャネルに接続する手間が非常に少ない
    2. 各チャネルの仕様に合わせて適切にデータを変換してくれる
    3. 「誰がどのBotに話しかけているか」という状態を渡してくれる
  • Bot Builder SDK : これを使ってWebアプリとしてのBotを開発します。対応言語は node.js と C# です!SDK を使うと以下のようなことができます (正確には API をラッピングしているので SDK 使わなくてもできます)。
    • Connector の渡してきた「誰がどのBotに話しかけているか」などの情報を操作する
    • いまどんな話題について話しているかという状態を管理する
    • 画像やボタンなどを表示する
  • State Service : ユーザーの状態を管理します。Bot Framework を使うときにはこれを使って状態管理しています。
  • Developer Portal : 自分のボットを登録して、チャネルに接続するための設定をするためのページです。接続テストもできて便利です。ここから Bot DirectoryにBotを発行できます。
  • Bot Directory : Bot の App Store みたいなものです。開発者がBot を登録し、ユーザーがいろんなBotを探せます。

ちなみに、各コンポーネントの関係や、開発者とMicrosoftの役割分担を図にすると下記のとおりです。これを覚えておくと理解がだいぶ楽になります。

Bot Framework の好きなところ

上のセクションの部分と多少かぶるところもあるのですが、好きなところも共有します。

  • マルチチャネル展開がすごい楽。Bot は基本的にSlack, Skype などのチャットアプリ内で活躍します。このチャットアプリのことをチャネルと呼んでいて、各チャネルごとにボットを開発するための仕様を公開しています。でも、それぞれに対応するのだるいです。B2Bなら Slack や Microsoft Teams で、B2CならSkypeやWebみたいに使い分けたいのですが、そのたびに仕様学ぶのが面倒です。その面倒な部分を吸収してくれる方向性は好きです。
  • 状態管理がうれしい。Botのインタフェースは対話を前提としているので、「この人となんの話してたっけ?」という状態管理が重要です。もし自分で実装するとしたら、何らかのキャッシュサービスみたいなのを作らないとですが、Bot Frameworkはそれも用意してくれているので助かります。

なんだ2つか?と思うかもですが、結構これ大きいです。ちなみに、Web アプリとして開発できるので、更新も楽だし、Web開発のテクニックをそのまま使えるのもいいところです(ただ、それってWeb開発のメリットの話なので割愛しています)。

次回以降は、実際に開発するための方法を解説しますのでお楽しみに!ちなみに、僕らのチームではC#で開発しているので、このブログもC#に関するものになります。node.jsでもよかったのですが、僕たちの中ではVisual StudioとC#の組み合わせが一番生産性高いと感じているのと、C#ってUnityとかXamarinもできるので、将来性も考えてC#で開発することにしました。