LoginSignup
10
9

More than 5 years have passed since last update.

Azure Bot Serviceを使ってBOTを10分で作成する(+日本語化手順)

Posted at

概要

今回は、マイクロソフトが11月15日にリリースした、「Azure Bot Service」を使って、チャットボットを10分で作ってみたいと思います。

事前に必要なもの

  • Azureのサブスクリプション

使い方

  1. まず、Azure Portalから、「新規」>「Intelligence + Analytics」>「Bot Service」の順に選択し、項目を記入し、「作成」をクリックします。
    image

  2. 作成されたものは「App Service」からアクセスします。
    image

  3. アプリの種類は「Bot Service」として表示されます。これをクリックします。
    image

  4. 開くと、Microsoft App IDの作成が求められます。「Create Microsoft App ID and Password」をクリックします。
    image

  5. アプリ名は(1)で設定したアプリ名、アプリIDは自動で生成されます。「アプリパスワードを生成して続行」をクリックします。
    image

  6. パスワードが表示されます。表示されたパスワードをメモ帳等のテキストエディタへ貼り付けて、「OK」をクリックします。パスワードは後程利用します。
    image

  7. 「終了してボットのフレームワークに戻る」をクリックします。
    image

  8. 先ほど表示されていた、App IDとメモ帳へ貼り付けていたパスワードを入力します。
    image

  9. 次に言語を選びます。今回はC#で作りますので、「C#」をクリックします。
    image

  10. 次に、作成するBOTのテンプレートを選びます。今回は、Formを選択しますが、ほかにも色々用意されています:
    Basic - 単純に入力した内容をオウム返しするBOTです。
    Form - FormFlowを利用してアンケートを取るBOTが作成できます。
    Proactive - Azure Functionsのトリガーイベントで、Azure Botに動作させるテンプレートです。
    Language understanding - 自然言語解析のLUISを組み合わせたテンプレートです。
    image

  11. クリックすると、BOTの作成が始まります。1分ぐらいで完了します。
    image

  12. これで、BOTは作成されました。右側のチャット画面からメッセージを入力すると、会話ができます
    image

日本語化の手順

テンプレートままだと、英語になるので、日本語化します。

a) BasicForm.csxを以下のコードへ置換します。

using System;
using Microsoft.Bot.Builder.FormFlow;

public enum CarOptions { コンバーチブル = 1, SUV, 電気自動車 };
public enum ColorOptions {  = 1, ,  };

// For more information about this template visit http://aka.ms/azurebots-csharp-form
[Serializable]
public class BasicForm
{
    [Prompt("こんにちは! あなたの名前はなんですか?")]
    public string Name { get; set; }

    [Prompt("好みの車種を教えてください {||}")]
    public CarOptions Car { get; set; }

    [Prompt("好きな色を教えてください。 {||}")]
    public ColorOptions Color { get; set; }

    public static IForm<BasicForm> BuildForm()
    {
        // Builds an IForm<T> based on BasicForm
        return new FormBuilder<BasicForm>().Build();
    }

    public static IFormDialog<BasicForm> BuildFormDialog(FormOptions options = FormOptions.PromptInStart)
    {
        // Generated a new FormDialog<T> based on IForm<BasicForm>
        return FormDialog.FromForm(BuildForm, options);
    }
}

b) MainDialog.csxを以下のコードへ変換します。


#load "BasicForm.csx"

using System;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Builder.FormFlow;
using Microsoft.Bot.Connector;

/// This dialog is the main bot dialog, which will call the Form Dialog and handle the results
[Serializable]
public class MainDialog : IDialog<BasicForm>
{
    public MainDialog()
    {
    }

    public Task StartAsync(IDialogContext context)
    {
        context.Wait(MessageReceivedAsync);
        return Task.CompletedTask;
    }

    public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
    {
        var message = await argument;
        context.Call(BasicForm.BuildFormDialog(FormOptions.PromptInStart), FormComplete);
    }

    private async Task FormComplete(IDialogContext context, IAwaitable<BasicForm> result)
    {
        try
        {
            var form = await result;
            if (form != null)
            {
                await context.PostAsync("アンケートにお答えいただき、ありがとうございました。何か文字を入力するとアンケートが始まります。");
            }
            else
            {
                await context.PostAsync("フォームは空でした。もう一度入力して、アンケートをはじめてください");
            }
        }
        catch (OperationCanceledException)
        {
            await context.PostAsync("アンケートがキャンセルされました。アンケートを再開するには、何か文字を入力してください。");
        }

        context.Wait(MessageReceivedAsync);
    }
}

c) 2016/11/19現在、コードを書き換えただけでは、Azure Functionsのように変更内容が完全に反映されるわけではみたいなので(気のせいかもしれませんが)、いったん、このAzure Bot Serviceが稼働しているベースとなるApp Serviceを再起動します。
再起動する方法は、「Settings」をクリックします。

image

d) Advanced settingsにある、「Open」をクリックします。
image

e) 「再起動」をクリックします。
image

f) これで日本語化されました。
image

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9