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

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

前回に続いて、今回はモジュール 4  の Deep Dive です。 GitHub: https://github.com/Azure-Samples/azure-serverless-workshop-team-assistant/tree/lang/jp/4-github-bot 概要 このモジュールでは Logic Apps を使ったボット機能の拡張をしています。全て GUI のため迷うところは少ないですが、面白い点はボットの登録先は Azure ファンクションである必要がなく、REST ベースで呼べるものであれば良い点です。 Logic App 作成時のトラブルシューティング 作成時点でうまくいかない場合は、以下の方法でトラブルシューティングできます。 ログの確認 1. アクティビティログを選択。 2. フィルター条件を指定して、適用。 GUI でうまく操作できない ごく稀に、GUI でうまく入力できないなどの問題が出ます。その場合は以下の方法でトラブルシュートできます。 – 最新のブラウザまたは異なるブラウザで試してみる – ズーム比率を変えて試してみる – 余計なブレードを閉じて領域を確保する それでもうまくいかない場合、Code View を使って直接編集することも可能です。慣れないうちは難しい感じがしますが、JSON 形式で定義されているだけですので、順番に見ると分かるはずです。 1. Logic App のメニューから Code View を開きます。 2. 必要な個所を編集して保存します。 Logic App 実行時のトラブルシューティング 構成は簡単なものの、うまく動作しない場合のトラブルシューティングは知っておいて損はないでしょう。 実行ログ… Read more

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

前回に続いて、今回はモジュール 3 の Deep Dive です。 GitHub: https://github.com/Azure-Samples/azure-serverless-workshop-team-assistant/tree/lang/jp/3-squirebot 概要 このモジュールではボットの本体を作ります。既存の GitHub 上のソリューションを使うため手順は簡単ですが、ここではコードを見ていきます。このソリューションにはボットの他に、タスク (コマンド) を登録するための Web アプリが含まれます。 プログラムの取得と実行 1. コマンドプロンプトより任意のディレクトで以下のコマンド実行。 git clone https://github.com/christopheranderson/squirebot 2. まずボット側から。squirebot\src\task-functions に移動して code . コマンドで Visual Studio Code を起動。 3. 次に package.json を確認。依存関係がすべて記述。Visual Studio Code の統合ターミナルより npm i を実行して依存関係をインストール。node_modules フォルダが作成されモジュールがコピーされる。 4. 続いてコンソールより npm start を実行。4 つのファンクションが起動。フォルダ構成を確認し、function.json を含むフォルダがファンクション名となっていることを確認。 5. 既にモジュール 2 で出てきてた lanceFetcher… Read more