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

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

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

ハロウィーン楽しんでますか? 今回は Serverless Conf 開催記念ということで、GitHub 上にある Azure Serverless ワークショップの Deep Dive をやります。各モジュール事に、まずワークショップをやってからこちらをご覧ください。 GitHub: Azure Serverless Workshop 日本語版 ワークショップの概要 このワークショップはボットをフロントエンドに使い、バックエンドに各種 Azure Serverless テクノロジーを使っています。各モジュールごとにボットが強化されていく様は、なかなか面白いです。ユーザーがボットにタスク(コマンド)を送ると、ボットが必要なことを聞いてくるので、すべて返信すると結果が返される仕組みです。 前提条件 Windows でも Mac でも動作するように作られています。必要なものはワークショップの手順にあるのでそちらを参照。このブログでは、Windows ベースでの検証をします。 モジュール 1 ワークショップの紹介と事前準備だけのため、Deep Dive 不要。Visual Studio 2017 など各種ツールは最新にすることを推奨します。 モジュール 2 モジュール 2 では Azure ファンクションの作成が学べます。 Azure Functions Core Tools (@core) Azure Function Core Tools は .NET Core… Read more