Google Translation APIのカスタムコネクタを作成する方法

今回はカスタムコネクタを作成する手順について記載します。 前回の投稿ではPowerAppsから既存のコネクタを使用していましたが、 今回作ったカスタムコネクタで差し替えて前回作成したPowerAppsを動作させたりすることが可能となります。

カスタムコネクタとは

あらかじめ構築されているコネクタが利用できないサービスとの通信が必要になった際に、独自のトリガーとアクションを備えたコネクタを作成することができ、これをカスタムコネクタと呼んでいるようです。

learn.microsoft.com

Cloud Translation API

今回はこちらのGoogleのTranslation API(Basic)を実行するカスタムコネクタを作成していきます。

cloud.google.com

公式リファレンスに従いGoogle Cloudのコンソール画面から Cloud Translation API を有効にします。

cloud.google.com

cloud.google.com

今回はAPIキーで認証するので、公式リファレンスに従いAPIキーを作成しておきます。

cloud.google.com

Google Translationの実行準備が整ったら一度翻訳できるか試しておきます。

※「key=xxx...」には先ほど取得したAPIキーを設定します。

リクエストするJsonは以下の通りです。英語から日本語へ翻訳してテキストで結果を返すよう設定してJsonファイルに保存しています。

$ cat request.json
{
  "q": "The Great Pyramid of Giza (also known as the Pyramid of Khufu or the Pyramid of Cheops) is the oldest and largest of the three pyramids in the Giza pyramid complex.",
  "source": "en",
  "target": "ja",
  "format": "text"
}

実際にリクエストすると、以下のような結果がレスポンスされました。

$ curl -X POST -H "Content-Type: application/json; charset=utf-8" -d @request.json "https://translation.googleapis.com/language/translate/v2?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
{
  "data": {
    "translations": [
      {
        "translatedText": "ギザの大ピラミッド (クフ王のピラミッドまたはクフ王のピラミッドとも呼ばれる) は、ギザのピラミ ッド群にある 3 つのピラミッドの中で最も古く、最大のものです。"
      }
    ]
  }
}

cloud.google.com

cloud.google.com

カスタムコネクタの作成

公式リファレンスに従いカスタムコネクタを作成します。 コネクタ名は任意の名前を指定してください。今回ここでは「GoogleTranslator」とします。

Create

learn.microsoft.com

1. 全般

以下設定します。

ホストにはAPIのURLから「translation.googleapis.com」を、ベースURLには「/language/」をそれぞれ指定します。

設定できたら次のステップへ進みます。

https://translation.googleapis.com/language/translate/v2

項目 設定値
アイコンの背景 任意
説明 任意
オンプレミスデータゲートウェイ経由で接続 使用しないのでチェックなし
スキーマ HTTPS
ホスト translation.googleapis.com
ベースURL /language/

General

2.セキュリティ

認証タイプで「APIキー」を選択します。

試しにリクエストを実行した際に確認した通り、「key=xxx...」とすることでAPIキーを指定できるのでパラメータ名には「key」を、パラメータの場所には「クエリ」を設定します。

設定できたら次のステップへ進みます。

項目 設定値
パラメータのラベル 任意
パラメータ名 key
パラメータの場所 クエリ

Security

3.定義

ここではカスタムコネクタのふるまいを設定することができます。

画面左の「アクション」から「新しいアクション」を押下すると入力フォームが表示されるので設定項目を順に設定していきます。

New Action

3.1.全般

操作IDはこのアクションの名前のようなもので、一意である必要があります。

例えば「Translation」と設定したとすると、GoogleTranslator.Translation(...)のような形で参照元から呼び出すことができるようになります。(※GoogleTranslatorは本記事で作成するカスタムコネクタ名)

項目 設定値
概要 任意
説明 任意
操作ID 操作を識別する一意の文字
表示 none

Action Definition

3.2. 要求

ここではカスタムコネクタが要求を行うために必要な前提条件を定義します。

「サンプルからのインポート」を押下すると、画面右に設定項目が表示されます。

Request

表示されたフォームに以下のように設定します。

項目 設定値
動詞 POST
URL https://translation.googleapis.com/language/translate/v2
ヘッダー 任意
本文 以下、json

先ほどお試しでリクエストしたJsonファイルの内容をそのまま貼り付けます。

{
  "q": "The Great Pyramid of Giza (also known as the Pyramid of Khufu or the Pyramid of Cheops) is the oldest and largest of the three pyramids in the Giza pyramid complex.",
  "source": "en",
  "target": "ja",
  "format": "text"
}

Request Setting

設定したら「インポート」を押下して完了です。

3.3. 応答

ここでは要求の実行時にコネクタによって返される応答の形を定義します。

「default」を押下すると設定画面が表示されます。

Response

「サンプルからのインポート」を押下すると、画面右に設定項目が表示されます。

項目 設定値
ヘッダー 任意
本文 以下、json

先ほどお試しでリクエストした結果のJsonをそのまま貼り付けます。

{
  "data": {
    "translations": [
      {
        "translatedText": "ギザの大ピラミッド (クフ王のピラミッドまたはクフ王のピラミッドとも呼ばれる) は、ギザのピラミ ッド群にある 3 つのピラミッドの中で最も古く、最大のものです。"
      }
    ]
  }
}

Response Setting

設定できたら次のステップへ進みます。

4. コード(プレビュー)

今回は使用しないため何もせず、「コネクタの更新」を押下してこれまでの設定を保存して次のステップに進みます。

Code

5. テスト

このステップでは作成したカスタムコネクタが正しく動作するかテストすることができます。

まずは画面上部にある「新しい接続」を押下します。

GoogleAPIキーを求められるので、作成したAPIキーを入力します。

本文には任意のパラメータを設定して「テスト操作」を押下することでリクエストが実行されます。

成功すると翻訳結果が出力されます。

・パラメータ設定例

項目 設定値
q test translation
source en
target ja
format text

Test

Power Appsからの参照

作成したカスタムコネクタを前回作成したPower Appsのアプリから実行してみます。

カスタムコネクタの参照方法や使用方法はコネクタの場合と同様なので前回の投稿をご確認ください。

mplementation

注意点としては、今回作成した「GoogleTranslator.Translation」は配列型(data.translations)をレスポンスするので、配列の最初の要素を取りだして変数に設定します。

Set(_toText, Index(GoogleTranslator.Translation({q: txtFrom.Text, target: "en", source:"ja", format:"text"}).data.translations, 1).translatedText)

これでGoogleのTranslation APIを使用した翻訳アプリを実装できました。

まとめ

コーディングはありませんでしたが、API連携しなければならないためかPower Appsでアプリを作成したりするより難易度は高く感じました。

今回は1からカスタムコネクタを作成する手順を実施しましたが、OpenAPIのAPI定義書をインポートして自動でカスタムコネクタを作成したりすることもできるようなのでそちらの方法を使えばもっと簡単に作成できるかもしれません。


参考

qiita.com