Workato：Workbot for SlackでメッセージやApp Homeを多言語化するには

# はじめに
Workbot for Slackを多言語な組織で利用したい場合、日本語のユーザーに対しては日本語で、それ以外のユーザーに対しては英語でBotからのメッセージやApp Homeを出力したいケースもあるかと思います。

例えば、日本語のユーザーに対しては「こんにちは、世界！」、それ以外のユーザーに対しては「Hello, World!」のようにメッセージを出力するには、以下の手順で対応することができます。

# レシピ

以下は、多言語対応レシピの一例となります。Step2で言語(locale)を含むユーザー情報を取得します。その後localeに応じた条件分岐を行い、ユーザーの言語に合ったメッセージをSlackへ出力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/0215d23a-4922-5bd1-dca7-cce639a9cd80.png)


# 手順
## Step1 Workbot for Slackコネクターを追加し、トリガーを設定します。
以下では `New Command` トリガーを指定していますが、`New event` `New Shortcat trigger` など、その他のトリガーも対応可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/a9e525ba-b192-8036-d8f0-dc9af3861031.png)

## Step2 Workbot for Slackコネクターを追加し、Custom Actionを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/ee43bbd0-c8ce-35f3-7aa1-f9150b52e3de.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/7bed0cb3-8194-6ae1-4ffa-69bd7aa80b39.png)


|項目                     | 値          |
|:-----------------------|:-------------|
| Action name            | 任意の名称    |
| Method                 | GET          |
| Path                   | users.info   |
| Response type          | JSON request |
| Request URL parameters | user: Step1の Context > User ID<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/d9580b42-20d3-c281-5617-3113b58b6ddb.png) <br> include_locale: true|
| Request body           | `Use JSON` をクリックし、以下のJSONテキストをコピーしてスキーマを生成する<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/1bc65736-6382-06d5-7225-108cd73cfa31.png) |


```json
{
    "ok": true,
    "user": {
        "id": "W012A3CDE",
        "team_id": "T012AB3C4",
        "name": "spengler",
        "deleted": false,
        "color": "9f69e7",
        "real_name": "Egon Spengler",
        "tz": "America/Los_Angeles",
        "tz_label": "Pacific Daylight Time",
        "tz_offset": -25200,
        "profile": {
            "avatar_hash": "ge3b51ca72de",
            "status_text": "Print is dead",
            "status_emoji": ":books:",
            "real_name": "Egon Spengler",
            "display_name": "spengler",
            "real_name_normalized": "Egon Spengler",
            "display_name_normalized": "spengler",
            "email": "spengler@ghostbusters.example.com",
            "image_original": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_24": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_32": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_48": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_72": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_192": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_512": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "team": "T012AB3C4"
        },
        "is_admin": true,
        "is_owner": false,
        "is_primary_owner": false,
        "is_restricted": false,
        "is_ultra_restricted": false,
        "is_bot": false,
        "updated": 1502138686,
        "is_app_user": false,
        "has_2fa": false,
        "locale": "en-US"
    }
}
```
## Step3 ユーザーの言語が日本語の場合のif条件を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/67952cf2-b37d-038b-d7ff-fef1d0ca6681.png)

|項目                     | 値          |
|:-----------------------|:-------------|
| Data field             | Step2の User > Locale<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/02f07c91-3537-6aed-1943-39e8e6407ac3.png)|
| Condition              | equal          |
| Value                  | ja-JP          |

## Step4 日本語の場合の結果を定義します。
以下では、「こんにちは、世界！」というメッセージをSlack上のトリガーが発生したチャンネル上に出力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/c2451758-a0b3-4328-5758-7f6a1769f3f0.png)

## Step5 ユーザーの言語が日本語以外の場合のif条件を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/e1fd04d4-6037-7437-3c09-c8f01b430378.png)

|項目                     | 値          |
|:-----------------------|:-------------|
| Data field             | Step2の User > Locale<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/02f07c91-3537-6aed-1943-39e8e6407ac3.png)|
| Condition              | does not equal |
| Value                  | ja-JP          |

## Step6 日本語以外の場合の結果を定義します。
以下では、「Hello World!」というメッセージをSlack上のトリガーが発生したチャンネル上に出力します。


# 実行結果
## Slackユーザーの設定言語が日本語の場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/f45a1b0c-ba58-0711-6eaa-8de0f3c64641.png)

## Slackユーザーの設定言語が日本語以外の場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/1efe509b-ab88-b897-39bb-17b9a2d5f0b8.png)

# 参考情報

https://api.slack.com/methods/users.info

https://api.slack.com/start/localizing