0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MuleSoft公式チュートリアルをやってみたシリーズ、もう一つ上げます。

公式チュートリアルは英語なので、日本語で細かく手順を知りたい人向けに本記事を書きました。

今回は、チャットボット開発をやっていた者としては気になる Creating a chatbot with Microsoft Translator & Slack というチュートリアルを学んでみました。

チャットボットと聞いて、お? と思ったけれど、蓋を開けてみれば

Slackでコメントするときに /translate で始めると
image.png

入力したコメントを、裏で Microsoft Translator を使って翻訳し 投稿する機能
image.png

を作るということなので、チャットボットというよりは翻訳アプリですね。

本記事の元ネタは、下記のMuleSoft公式チュートリアルエントリーです。
Creating a chatbot with Microsoft Translator & Slack

概要

ではさっそく参りましょう!

今回のチュートリアルでは、Slackのアプリケーションウェブアプリケーション (MuleSoft)を作ります。

Slack アプリケーション の方は、Slack 内で /translate と入力すると起動されるカスタムコマンドです。
処理としては、/translate の後ろに入力された <翻訳したい文章> をリクエストに含めて、ウェブアプリケーションのAPIに送信します。

ウェブアプリケーション の方は、MuleSoftで作ります。
Slack アプリケーションから受信したリクエストを、下図のように処理します。

image.png

翻訳したテキストメッセージをウェブアプリケーションが返すので、Slackアプリケーションは、そのメッセージをコメントとして投稿します。

準備

このチュートリアルでは、下記のアプリケーションを使います。チュートリアルを進める前に無料トライアルアカウントの取得や、デスクトップアプリケーションのダウンロード/インストールをする必要があります。

  • Anypoint Platform - Anypoint Platformのアカウントが必要です。今回は無料トライアルアカウントを利用しています。Anypoint Platformの操作はブラウザ上で行います。
  • Anypoint Studio - APIの実装を開発するためのデスクトップ・アプリケーションです。ダウンロード・インストールしてください。
  • Slack - アカウントがない場合はトライアルアカウントを作成してください。
  • Microsoft Translator - アカウントの取得についてはチュートリアル内で説明します。

Anypoint PlatformAnypoint Studio の基本操作は、公式チュートリアル、および過去記事をご参照ください。

Anypoint Studio と Anypoint Platform の準備

まず、Anypoint Studio を起動し、translate など任意の名前で、新しいプロジェクトを作成します。

開いたキャンバスに、Mule Palette から HTTP Listener コンポーネントをドラッグ&ドロップします。
Listenerのパスは /slack に設定します。

image.png

Advanced メニューで、Allowed methodsPOST にします。

image.png

次に、Mule Palette から Logger コンポーネントをフローに追加します。
Messageセクションで fxボタンを押下し、payload.text と入力します。

image.png

ここまでのファイルを すべて保存 してから、Package Explorer内でプロジェクトのメインフォルダーを右クリックし、メニューから Anypoint Platform > Deploy to CloudHub を選択して アプリをCloudHubにアップロード/デプロイします。

image.png

Anypoint Platform ポータルにログインし、Runtime Manager でデプロイしたアプリを開き

image.png

エンドポイントURL xxx-xxx-xxx.cloudhub.io を控えておきます。

image.png

Slackアプリの作成

自分のSlackワークスペースに新しいアプリを追加します。

Slack APIアプリ ページにログインします。
Create New Appをクリックし、From scratchを選択してアプリを新規作成します。

image.png

App Name欄で適切なアプリ名を入力して、Create App。

image.png

ユーザーがSlack上でコマンドを入力できるようにしたいので、Slash Commands を選択し、Create New Command ボタンをクリック。

image.png

Command を /translate とし、その下の Request URLに 先ほど Runtime Manager画面で取得した URL を入力し、Short Descriptionに適当な説明を入力して Save

image.png

アプリの Basic Information 画面に戻ったら、Install your app セクションの Install to Workspace ボタンをクリックして、今作成した Slackアプリがワークスペースで使えるようインストールします。

image.png

Slackのワークスペースに入り、テキスト入力スペースで / を入力したとき、/translate コマンドが選択肢として表示されることを確認しましょう。

image.png

Microsoft Azure Translator Text API と連携する

翻訳Slackボットを完成させるための次のステップは、先ほどAnypoint Studioで作り始めたアプリケーションにMicrosoft Translator Text APIとの連携を追加することです。

まず、Translator Text Signup ページで無料トライアルに申し込みます。

Azureのポータルにログインし、サイドバーのAll resources を開きます。

image.png

Create ボタンでサービスの選択画面を表示し、Translator Text を検索します。

image.png

Translator サービスを選択して、Next。

image.png

Create ボタンを押下して Translatorサービスを作成します。

Subscription 配下の Resource group 欄では、ドロップダウンリストが空の場合、欄の下にある Create new リンクをクリックし、任意のリソースグループ名を指定して新しいリソースグループを作ります。

image.png

任意の Region(Japan East等)、Name、Pricing tierを入力します。

Pricing tierに関しては、無料トライアル期間の$200分のクレジットを利用したいので Free F0 (Up to 2M characters translated per month) を選ぶようにしてください。

image.png

Review + create ボタンを押下してサービス作成を完了します。

では、Anypoint Studio に戻ってアプリケーションの続きを作りましょう。
Mule Palette から Set Variable コンポーネントをドラッグし、先ほど最後に追加した Logger の隣にドロップして接続します。

image.png

変数名(Name)を textToTranslate に設定し、fx ボタンを押下して、payloadに含まれるテキストメッセージをtextToTranslate変数に格納する DataWeave コードを入力します。

image.png

DataWeaveスクリプト
%dw 2.0
output application/json
--- 
payload.text

次に、HTTP Request Connector をフローに追加します。

image.png

リクエストの設定では、URLの末尾にMicrosoft Translatorのバージョンと、to= で変換する言語を指定します。
例えば Slack に日本語で入力したコメントを英語に翻訳したい場合は
https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=en

image.png

Body には、JSONで Microsoft Translator API の仕様に沿ったリクエストを出力するコードを入力します。

DataWeaveスクリプト
%dw 2.0
output application/json
---
[{
"Text": vars.textToTranslate
}]

Headersタブでは、3つの項目を設定します。

Name Value
"Content-Type" "application/json;charset=UTF-8"
"Ocp-Apim-Subscription-Key" <KEY1>
"Ocp-Apim-Subscription-Region" <Region>

image.png

<KEY1><Region>は、先ほどMicrosoft Azure で設定した Translator の Resource Management > Keys and Endpoint 画面で確認できます。

image.png

最後に Transform Message コンポーネントをフローに追加します。

image.png

翻訳されたテキストメッセージが Translator API のレスポンスpayloadに含まれていて、これを抽出したいので、下記のスクリプトを追加します。

DataWeaveスクリプト
%dw 2.0
output text/plain
---
payload.translations[0].text[0]

image.png

これでフローは完成です。
全体の流れは下図のようになります。

image.png

すべてのファイルを保存したら、アプリケーションをCloudHubにデプロイ してください。
次のステップで動作確認をします。

動作確認

アプリケーションをCloudHubにデプロイ後、Slackを開き、テキスト入力エリアに
/translate <任意の日本語コメント> と入力しコメントを送信します。

image.png

コメントが英語に翻訳されて表示されれば 成功 です。

image.png

何かがうまくいっていないときはこのように表示されます。

image.png

トラブルシューティングするには Anypoint PlatformRuntime Manager に入って先ほど CloudHub にデプロイしたアプリケーションを開き

image.png

左側のメニューから Logs をクリックしてログを表示します。

image.png

ログのエラーメッセージを手掛かりにアプリケーションを修正して再デプロイしましょう。

image.png

おわりに

MuleSoft公式チュートリアルをやってみたシリーズは、本記事が最後です。

今回は、Microsoft Translatorの仕様がMuleSoft公式チュートリアルの例と少し違っていたようで、Bearer Tokenを使わない手順にして初めてうまくいきました。

いずれ本家が現行バージョン用にチュートリアルをアップデートすると思いますが、それまでは本シリーズの補足情報がご参考になればと思っています。

最後まで読んでいただき、ありがとうございました。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?