移行ガイド

会話履歴をインポートする

別のチャットツールやヘルプデスクから移行しますか?履歴をCSVなどのファイルでエクスポートしてAIアシスタントに渡せば、MCPサーバー経由ですべての会話をSonnyに取り込めます。マッピングはAIが行うので、どのツールでも利用できます。

何も送信されません

インポートした会話はあくまで履歴です。お客様へのメールやメッセージの送信、チームへの通知、Webhookの発火、AI返信や受信ルールの実行、満足度アンケートの送信は行われません。会話はクローズ済み・既読の状態で届くので、受信トレイは落ち着いたままです。

始める前に

AIアシスタントに接続されたSonny
ClaudeやCursorなどのAIアプリにSonnyのMCPサーバーを追加します。MCPガイドなら1分ほどで完了します。
以前のツールからのエクスポート
会話とメッセージのCSV、JSON、またはスプレッドシートのエクスポートです。以前のツールがファイルをリンクとして保存している場合は、その列も残しておいてください。Sonnyがダウンロードできます。
インポート先のチャネル
インポートしたチャットはチャネルのWebサイトを、インポートしたメールはチャネルのメールアドレスを使います。AIがチャネルを一覧表示して、どれを使うか確認してくれます。

手順

  1. 01

    Sonnyを接続する

    SonnyのMCPサーバーをAIアシスタントに接続し、ワークスペースにサインインします。以前に接続したことがある場合は、AIが新しいインポートツールを認識できるように、もう一度接続してください。

  2. 02

    エクスポートを渡す

    ファイルを添付するか、AIにファイルの場所を伝え、どのチャネルにインポートするかを指定します。

  3. 03

    インポートを依頼する

    下のプロンプトを出発点にしてください。AIがファイルを読み取り、Sonnyの形式にマッピングして、バッチで送信します。

  4. 04

    結果を確認する

    AIがインポートした内容と問題点を報告します。Sonnyでいくつかの会話を開いて問題なく表示されているか確認してから、残りを続行させましょう。

プロンプトの例

列名はお使いのファイルに合わせて変更してください。

prompt
export.csv の会話を、import_conversations ツールを使って Sonny のチャネル "Support" にインポートしてください。
各行は1件のメッセージです。行を ticket_id でグループ化してください(これが会話の externalId です)。message_id は各メッセージの externalId として使ってください。
お客様のメッセージは incoming、担当者の返信は outgoing、非公開コメントは note にしてください。
created_at を sentAt として使い(時刻は UTC です)、attachment_url を attachments に使ってください。
まず5件の会話をインポートするので Sonny で確認させてください。その後、残りを20件ずつのバッチでインポートして、合計件数を教えてください。

取り込まれるもの

会話
件名、ステータス、タグ、担当者が、チャネル上のチャットまたはメールの会話として取り込まれます。
メッセージ
お客様のメッセージ、チームの返信、社内メモ、チャットボットの返信が、元の日時のまま取り込まれます。
連絡先
メールアドレスで照合し、新しい連絡先は作成されます。Sonnyにすでにある連絡先が変更されることはありません。
添付ファイル
画像、PDF、ドキュメント、スプレッドシート、ZIPファイルを25MBまで。公開リンクからでも、ファイルそのものを送る形でも取り込めます。

インポート形式

AIは会話を次の形で送信します。自分で書く必要はありませんが、各フィールドの役割を知っておくと役立ちます。

json
{
  "sourceId": "source_shop",
  "conversations": [
    {
      "externalId": "crisp-8812",
      "subject": "Delivery question",
      "contact": {
        "email": "ada@example.com",
        "name": "Ada"
      },
      "tags": [
        "Shipping"
      ],
      "messages": [
        {
          "externalId": "1",
          "direction": "incoming",
          "body": "Has my order shipped?",
          "sentAt": "2025-03-14T09:30:00Z"
        },
        {
          "externalId": "2",
          "direction": "outgoing",
          "body": "Yes, it left this morning.",
          "sentAt": "2025-03-14T09:41:00Z",
          "author": {
            "name": "Sam",
            "email": "sam@yourcompany.com"
          }
        },
        {
          "externalId": "3",
          "direction": "incoming",
          "body": "",
          "sentAt": "2025-03-14T09:45:00Z",
          "attachments": [
            {
              "url": "https://files.example.com/receipt.pdf"
            }
          ]
        }
      ]
    }
  ]
}
externalId
以前のツールでの会話のIDです。必須です。同じIDをもう一度インポートすると、新しい分だけが追加されます。
messages
会話のメッセージです。それぞれに、方向(incoming、outgoing、note のいずれか)、本文、sentAt が必要です。
sentAt
メッセージを送信した日時です。タイムゾーン付きの ISO 8601 形式で指定します(例:2025-03-14T09:30:00Z)。
author
書いた人です。チームメンバーのメールアドレスを指定すると、返信がSonnyのそのメンバーに紐づき、type に bot を指定するとチャットボットの返信になります。
contact
お客様のメールアドレスと名前です。
status
open、pending、closed のいずれかです。デフォルトは closed です。
channel
chat または email です。チャネルにWebサイトがある場合のデフォルトは chat です。
attachments
ファイルです。それぞれ公開の https の url、または fileName、contentType、dataBase64 で指定します。
tags
タグ名です。新しいタグは自動的に作成されます。
assigneeEmail
会話の担当に割り当てるチームメンバーです。

知っておくと便利なこと

  • 何度でも安全に実行できます。インポートが途中で止まった場合は、もう一度実行してください。取り込み済みのメッセージはスキップされ、失敗した添付ファイルは再試行されます。
  • バッチ。1回の呼び出しで、会話は50件、メッセージは1,000件、添付ファイルは25件まで扱えます。大きなインポートはAIが自動的に分割します。
  • メールアドレスがない場合は?会話は連絡先なしでインポートされます。お客様の名前はメッセージに残ります。
  • チームメンバー。作成者のメールアドレスがワークスペース内の誰かと一致すると、返信がそのメンバーに紐づきます。一致しない場合は、以前のツールの名前がそのまま残ります。
  • インポートできる人。オーナー、管理者、エージェントです。APIキーには、会話、メッセージ、連絡先への書き込みアクセスが必要で、ファイルを扱う場合は添付ファイルも必要です。

開発者向け

AIアシスタントを使わない場合は、同じJSONをAPIキーを付けて POST /api/v1/conversations/import に送信してください。完全なスキーマはAPIリファレンスにあります。

関連ドキュメント