Microsoft Bot Framework と LINE を連携して賢いボットを開発

Microsoft はボット開発フレームワークとして Bot Framework (http://dev.botframework.com) を提供しています。主な機能としては 一度書けば様々なプラットフォームに展開が可能。(skype, facebook, skype for business, slack, sms, email, など) コンテキスト自動制御による、複雑な会話を実現するダイアログ機能 C#/Node.js SDK Visual Studio 用テンプレートやエミュレーター Microsoft コグニティブサービスとのシームレスな連携 個人的にはダイアログのサポートが最高です。もし一問一答ボット作るだけなら不要ですが、前回会話の内容を保持するなどスクラッチでダイアログ機能を作ることを考えると気が遠くなります。 では何が問題かというと、LINE を連携先として現時点でサポートしていないという点です。 解決策 Bot Framework では汎用的に使えるダイレクトラインという接続方法を提供しているため、こちらを使えばどんなプラットフォームとも連携が可能です。また既に C# でコネクタを開発済です。 対象者 既に Bot Framework でボット開発をしていて、 LINE にもつなげたい開発者 LINE ボット開発者で Bot Framework を使いたい開発者 前提 Microsoft Bot Framework bot アプリケーション。この記事では GitHub にあるサンプルを使います。 Visual Studio 2017… Read more

Azure ファンクションと C# によるクロスプラットフォーム LINE Bot 開発

サーバーレスやボットなどのキーワードがバズってますが、台湾や韓国、日本などアジアでボットというと LINE を思い浮かべる方が多いのではないでしょうか。 この記事では LINE ボットをマイクロソフトのサーバーレスサービスである Azure ファンクションで実装する方法を紹介します。また Azure ファンクションはクロスプラットフォームで開発できるので、Windows でも Mac でも Linux でも開発できるのが魅力です。 前提条件 好きな OS。この記事では Windows を使います。 LINE 開発者アカウント https://developers.line.me/ja/ Azure サブスクリプション。無い場合は無料体験を https://azure.microsoft.com/en-us/free/ Visual Studio Code https://code.visualstudio.com/ dotnet core ライブラリ https://www.microsoft.com/net/learn/get-started/windows Mac や Linux 用はリンクから左にあるダウンロードを選択。 Node.js https://nodejs.org/en/ Git https://git-scm.com/ IDE と一緒にインストールされることが多いですが、必要な個別で。 ngrok https://ngrok.com/ LINE のセットアップ 既に LINE ボットアプリ作ったことある場合はスキップしてください。 1. https://developers.line.me/ja/ で LINE… Read more

Improve LINE Bot development productivity with Visual Studio Code Extension

In my previous article, I explained about LINE simulator. In this article, I explain VSCode extension to improve LINE Bot development. LINE Bot Development Utilities This is the VSCode extension. See the link for detail explanation. Visual Studio Marketplace : https://marketplace.visualstudio.com/items?itemName=kenakamu.linebotutilities GitHub: https://github.com/kenakamu/LINEBotDeveloperUtil How to setup 1. Open Visual Studio Code. 2. Click Extension menu on… Read more

Develop intelligent LINE bot with Microsoft Bot Framework

Microsoft offers great bot development framework (http://dev.botframework.com) for bot developers. The key features are: Write once, publish to multiple chat platform (skype, facebook, skype for business, slack, sms, email, etc.) Provide dialog support so that developers easily implement conversation flow without managing the conversation. C#/Node.js SDK IDE and simulator support Native integration with Microsoft Cognitive… Read more

C# LINE Bot development with Azure Function for cross-platform

Serverless and bot are buzz words these days. But when you say bot in some countries like Taiwan, Korea, Japan, many people think about LINE as its platform. In this article, I explain how you can jump start developing LINE bot using Microsoft technologies and host the app on Function App at the end. Prerequisites… Read more

Line Messaging API SDK update to v1.6

さっき v1.5 にしたばかりでしたが、別のレポジトリでアドバイスをもらった HttpClient のシングルトン化および Serverless Conf に参加した機会に Azure Function 対応しようと思ったので、ライブラリを .NET Standard 2.0 対応にしました。それに伴い、各種 VS テンプレートも更新済。 .NET Standard 2.0 にしたことでこれまでのテンプレートで SDK だけ上げると動かない場合があり、以下対応が必要です。 .NET Framework 4.6.1 以上 依存 NuGet の更新 I just released v1.5, but I forget to implement the advice I got from the issue from another repository about HttpClient singleton for performance. Another… Read more

Line Messaging API SDK update to v1.5

先日の LINE Developer Day 2017 での発表を受け、以下の機能をサポートするように LineMessagingAPI.CSharp をサンプルをアップデートしました。 GitHub: https://github.com/kenakamu/line-bot-sdk-csharp/releases/ – DateTime Picker – Image Carousel – リッチメニュー – Group および Room のユーザー一覧および詳細取得 ※開発者アカウントのためテストできていません。 Visual Studio テンプレートでも、以下のメッセージを送ることでテスト可能です。 carousel: カルーセルに DateTime Picker が付いてきます。 imagecarousel : 5つの画像カルーセルが返ります。 addrichmenu : リッチメニューを現在のユーザーに追加します。 deleterichmenu: 追加したリッチメニューを削除します。 deleteallrichmenu: すべてのリッチメニューを削除します。   LINE Developer Day 2017 was the other day, and I updated LineMessagingAPI.CSharp… Read more

Azure Serverless ワークショップ Deep Dive : モジュール 7,8

前回に続いて、今回はモジュール 7 と 8 の Deep Dive です。 GitHub モジュール 7: https://github.com/Azure-Samples/azure-serverless-workshop-team-assistant/tree/lang/jp/7-photo-mosaic-bot GitHub モジュール 8: https://github.com/Azure-Samples/azure-serverless-workshop-team-assistant/tree/lang/jp/8-coder-cards 概要 どちらも以下の点で共通したモジュールとなっています。 – 写真の解析 – Cognitive Service – C# コード自体は Serverless とは直接関係がなく、機能の実装を主としているため今回は解説しませんが、利用しているサービスなどを見ていきます。 各種サービス Azure Storage 写真の置き場所として利用 Blob を利用。またモジュール 8 では処理のトリガーとしてキューも利用。 Custom Vision Service このサービスを使うと、通常の Vision サービスでは解析されないものを独自に対応できます。既に多くのブログで紹介されています、例えば吉野家と松屋の牛丼を見分けるということが可能です。今回はランドマークを登録して見分けるデモをしていますが、是非独自のカテゴライズに利用してください。 Bing Search API Bing 検索の機能を API として利用できます。今回はイメージ検索とその URL 取得に使っています。一気に画像を取得するのに良さそうです。 Emotion API Cognitive Service… Read more

Azure Serverless ワークショップ Deep Dive : モジュール 6

前回に続いて、今回はモジュール 6 の Deep Dive です。 GitHub: https://github.com/Azure-Samples/azure-serverless-workshop-team-assistant/tree/lang/jp/6-scheduler-bot 概要 このモジュールでは Azure ファンクションと Logic Apps を使って Google カレンダーより複数メンバーの共通空き時間を取得する機能を実装します。 Azure ファンクション部分 取得した予定の共通の空きを検索するロジックを実装しています。 Logic Apps 部分 Google カレンダーより予定を取得するロジックを実装しています。 中身の解析 Azure ファンクションに渡すデータ Azure ファンクションでは最終的に以下のコードで予定を解析しています。つまり body にカレンダーが配列で入り、各カレンダーにスケジュールのイベントがさらに配列で入っています。この形式がポイントで、Logic Apps ではこのデータを作って Azure ファンクションを呼び出すことになります。 Logic Apps でデータの作成 Logic Apps では以下の手順で期待されるデータを作っています。 1. 変数として schedules 配列を作成。これが実際にファンクションに引き渡される。 2. Google カレンダーを取得した後、各イベントを schedules の配列アイテムとして追加。これでファンクションで期待されるデータが完成。 Foreach ループのポイント Logic Apps… Read more

Azure Serverless ワークショップ Deep Dive : モジュール 5

前回に続いて、今回はモジュール 5  の Deep Dive です。 GitHub: https://github.com/Azure-Samples/azure-serverless-workshop-team-assistant/tree/lang/jp/5-voting-service モジュール 5 は v1 が付きと無しがありますが、v1 は Windows 環境のみでサポートされる Azure ファンクション v1 の CLI 対応です。ここではマルチプラットフォームである v2 を対象にします。 概要 このモジュールでは投票を行える機能を実装します。以下の絵にあるように、合計 5 つ投票系のファンクションを作成し、Squire ボットに連携する仕組みです。 注意点 今日の時点で確認した限り、CosmosDB の拡張モジュール導入に日本語 UI 環境では失敗します。こちらのモジュールは英語 UI に切り替えて試してください。 プログラムの解析 基本的にはコマンドを実行して、コードをコピーしていけば動作しますが、いくつかポイントを見ていきます。 バインディング あまり触れてきませんでしたが、Azure ファンクションの特徴の 1 つにバインディングがあります。バインディングは外部サービスなどの連携に利用される技術で、 function.json ファイルで定義され、index.json などメインのコードから利用できます。 1. CreateVotingNode の function.json を開き、内容を確認。はじめのバインディングは、方向が in で名前が req と指定されており、タイプが… Read more