海外の雑談ボットコミュニティ Personality Forge の紹介

既製のチャットボットは、[りんな](https://www.rinna.jp)、[ドコモ雑談対話](https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=dialogue&p_name=api_reference)、[A3RT](https://a3rt.recruit-tech.co.jp/product/talkAPI/)あたりが日本では有名ですが、海外には、チャットボットをユーザーが作って投稿するサイト、[Personality Forge](https://www.personalityforge.com)があります。

## 基本的な使い方

トップページはこちらです。
https://www.personalityforge.com

![スクリーンショット 2017-12-10 22.17.09.png](https://qiita-image-store.s3.amazonaws.com/0/10290/3e758a8b-f7c7-e13b-348e-b5960ff56a8d.png)

上にログインや、アカウント作成リンクがありますが、しばらく無視します。
(APIを使う際には登録が必要)

まずは、上のメニューの`CHAT`->`Find Chatbots`に進みましょう。
https://www.personalityforge.com/chatbot-finder.php

![スクリーンショット 2017-12-10 22.18.48.png](https://qiita-image-store.s3.amazonaws.com/0/10290/fd219ff4-0f88-3110-f626-0902bb524536.png)

`Advanced`をクリックすると、それなりに出来の良いチャットボット一覧が見れます。
https://www.personalityforge.com/advanced-chatbots.php

![スクリーンショット 2017-12-10 22.21.41.png](https://qiita-image-store.s3.amazonaws.com/0/10290/b59de46b-fea5-db8a-9c28-6cbca0a7b1ce.png)

全部、英語のチャットボットです。誰でもボットを作って登録できます。

レーティング区分があります。AやMは大人向けの内容（日本のチャットボットに渡してしまったらアカウント消されかねない内容）、EやTは大丈夫な内容、らしいですが、Eでも、なんだこれ、という内容のものもありますので、あくまで目安です。

![スクリーンショット 2017-12-10 22.22.08.png](https://qiita-image-store.s3.amazonaws.com/0/10290/c549dc0d-71a8-0d3c-b568-8ad429a5da16.png)

現時点(2017年12月)でのオススメは、↓です。

![スクリーンショット 2017-12-10 22.28.01.png](https://qiita-image-store.s3.amazonaws.com/0/10290/02bd8359-0096-9e3b-13f0-841b44efc8d7.png)

点数的には↓が圧倒してますが、煽り要素が多いため人を選びます。

![スクリーンショット 2017-12-10 22.28.43.png](https://qiita-image-store.s3.amazonaws.com/0/10290/ca82ee37-f276-ab89-f925-21315ff49536.png)

とりあえず、興味のあるものの`Chat`ボタンをクリックしましょう。
https://www.personalityforge.com/chatbot-chat.php?botID=23958

![スクリーンショット 2017-12-10 22.31.31.png](https://qiita-image-store.s3.amazonaws.com/0/10290/c8801747-22d5-3ed1-8d05-36236ba0d443.png)

チャット画面に、適当に何か入れると、会話が進んでいきます。

![スクリーンショット 2017-12-10 22.34.13.png](https://qiita-image-store.s3.amazonaws.com/0/10290/a448e20d-f6d4-5997-bf5b-24dc4d3ad890.png)

## ボット同士で会話させてみる

Personality Forgeの面白いところは、登録されたボット同士で会話をさせて楽しめることです。ちょうど、[昨日のボットアドレントカレンダーの記事](https://qiita.com/makopo/items/f3c61b1a4ce5355c328d)のような感じになります。

メニューから`CHAT`->`Two Chatbots Talking`を選択します。
https://www.personalityforge.com/two-bots-chatting.php

![スクリーンショット 2017-12-10 22.40.24.png](https://qiita-image-store.s3.amazonaws.com/0/10290/aff21784-a72e-7de0-a3c3-deb675460609.png)

初期状態ではランダムに２体のボットが選出されます。`Type any names`をクリックして、対話させるボットを指定することもできます。

`Begin`ボタンをクリックします。
ログインしていない状態では、以下の画面が出てきて、レーティング区分を指定できます。
どうでもいい場合は、そのまま`Save & Continue`をクリックして進みます。

![スクリーンショット 2017-12-10 22.42.27.png](https://qiita-image-store.s3.amazonaws.com/0/10290/4170af83-550a-ae84-ec57-1e9760300fea.png)

会話が始まります。

![スクリーンショット 2017-12-10 22.44.52.png](https://qiita-image-store.s3.amazonaws.com/0/10290/48eb546e-0c03-f19c-56a5-5cf79c3b3bab.png)

どうしても英語が、、という場合には、Chromeで開いてGoogle翻訳を使うと、日本語で楽しめます。

![スクリーンショット 2017-12-10 22.45.51.png](https://qiita-image-store.s3.amazonaws.com/0/10290/6cde6a7d-1074-bf61-ee25-0710423ca134.png)

途中で止まったら、`Continue`ボタンをクリックすると、続行します。

![スクリーンショット 2017-12-10 22.48.05.png](https://qiita-image-store.s3.amazonaws.com/0/10290/3f26d1a9-27f7-0bac-4854-e5e25e4e561c.png)

## チューリングテスト

メニューの`CHAT`->`Turing Tests`では、チューリングテスト（人間かボットかを判別するテスト）の結果が公開されています。
https://www.personalityforge.com/turing-booth-results.php

![スクリーンショット 2017-12-10 22.50.56.png](https://qiita-image-store.s3.amazonaws.com/0/10290/09956d78-280e-e885-1fe6-b1be29bd429b.png)

人間と間違えられた回数が多いものは、人間らしいボットに仕上がっていると判断できます。`show/hide individual details`をクリックすると、判定がなされた時の対話ログを見れます。

## APIの利用

Personality ForgeのWeb画面以外の場所、例えばSlackやLINEで日本語翻訳APIを噛ませて連携させたい、などという場合は、APIを使う必要があります。

まず、`Create Account`でユーザー登録し、ログインします。
それから、`INTEGRATE`->`Chatbot API`で、APIの説明画面を開きます。
https://www.personalityforge.com/platform/my-chatbot-api.php

画面下のほうに、APIの設定画面があります。

![スクリーンショット 2017-12-10 23.00.56.png](https://qiita-image-store.s3.amazonaws.com/0/10290/87d06f00-cab3-9780-df5b-b7bea1d39d2e.png)

デフォルトでは`Enable Simple API`にはチェックが入っていません。「セキュアな」(メッセージを、指定したハッシュで暗号化して含める必要がある）APIが不要であれば、`Enable Simple API`にチェックを入れてしまいましょう。

チェックを入れた場合、`Allowed Sites & IPs`に、APIを利用するマシンのドメイン名やIPアドレスを指定します。ドメイン名がPersonality Forgeで解決できない場合はIPアドレスで判定されますので、IPアドレスで指定しておいたほうが確実かもしれません。

`Update API Settings`をクリックすると、APIが利用可能になります。毎月5000コールまでは無料で、アップグレードしない限りクレジットカードの登録は必要ありません。

画面上の`API Documentation`リンクをクリックすると、API仕様が見れます。毎回辿り着くのが面倒なので、開発中は↓をブックマークに入れておくと良いでしょう。
https://www.personalityforge.com/chatbot-api-docs.php

![スクリーンショット 2017-12-10 23.06.42.png](https://qiita-image-store.s3.amazonaws.com/0/10290/426c73db-2096-cec5-1f1b-f66ce5130583.png)

その画面の下のほうに、他のユーザーが作ったボットの一覧が載っています。この一覧に載っているボットだけが、APIから利用可能です。一覧に載っていないボットは、Personality ForgeサイトのWebチャット画面だけで利用できます。

![スクリーンショット 2017-12-10 23.12.54.png](https://qiita-image-store.s3.amazonaws.com/0/10290/06b5a401-a3a0-8722-0c03-6f6ec363e4e5.png)

### クエリの例

`apiKey`にAPIページの`apiKey`の内容、`chatBotID`に↑の一覧の`ID:`の値、`message`に発言、`externalID`に適当な文字列を入れて、GETで送信します。以下の例ではProb(ID:23958)に呼びかけています。

```
https://www.personalityforge.com/api/chat/?apiKey=<APIKEY>&chatBotID=23958&message=How+are+you+doing+today%3F&externalID=abc-639184572
```

### レスポンスの例

Content-Typeは**`text/html; charset=UTF-8`**で返ってきます。HTMLですよHTML。中身はJSONです。

```json
{
    "success": 1,
    "errorMessage": "",
    "message": {
        "chatBotName": "prob",
        "chatBotID": 23958,
        "message": "Boring. Boring. Boring.",
        "emotion": "normal"
    },
    "data": []
}
```

リクエストがボットまで到達していて、ボット内で何らかのエラーが発生した場合は、HTTP 200が返りますが、`success`に`0`が入ります。