마이그레이션 가이드
대화 기록 가져오기
다른 채팅이나 헬프데스크 도구에서 옮겨 오시나요? 기록을 CSV나 다른 파일로 내보내 AI 어시스턴트에게 주면, MCP 서버를 통해 모든 대화를 Sonny로 가져와요. 매핑은 AI가 하므로 어떤 도구든 쓸 수 있어요.
아무것도 전송되지 않아요
가져온 대화는 기록일 뿐이에요. Sonny는 이 대화로 고객에게 이메일이나 메시지를 보내거나, 팀에 알림을 보내거나, Webhook을 실행하거나, AI 답장이나 받은 편지함 규칙을 실행하거나, 만족도 설문을 보내지 않아요. 대화는 종료되고 이미 읽은 상태로 들어와서 받은 편지함이 조용하게 유지돼요.
시작하기 전에
- AI 어시스턴트에 연결된 Sonny
- Claude, Cursor 또는 다른 AI 앱에 Sonny의 MCP 서버를 추가하세요. MCP 가이드를 따르면 1분쯤 걸려요.
- 이전 도구에서 내보낸 파일
- 대화와 메시지를 담은 CSV, JSON 또는 스프레드시트 내보내기 파일이에요. 이전 도구가 파일을 링크로 저장한다면 해당 열을 그대로 두세요. Sonny가 다운로드할 수 있어요.
- 가져올 채널
- 가져온 채팅은 채널의 웹사이트를, 가져온 이메일은 채널의 이메일 주소를 사용해요. AI가 채널 목록을 보여 주고 어느 채널을 쓸지 물어볼 수 있어요.
단계별 안내
- 01
Sonny 연결
Sonny의 MCP 서버를 AI 어시스턴트에 연결하고 워크스페이스에 로그인하세요. 오늘 이전에 연결했다면, AI가 새 가져오기 도구를 볼 수 있도록 다시 연결하세요.
- 02
내보낸 파일 전달
파일을 첨부하거나 AI에게 파일 위치를 알려 주고, 어느 채널로 가져올지 말해 주세요.
- 03
가져오기 요청
아래 프롬프트를 출발점으로 쓰세요. AI가 파일을 읽고 Sonny 형식에 맞게 매핑한 뒤 배치로 전송해요.
- 04
결과 확인
AI가 가져온 내용과 문제점을 알려 줘요. Sonny에서 대화 몇 개를 열어 제대로 보이는지 확인한 뒤 나머지를 마저 진행하게 하세요.
프롬프트 예시
열 이름은 파일에 맞게 바꾸세요.
import_conversations 도구를 사용해 export.csv의 대화를 내 Sonny 채널 "Support"로 가져와 줘.
각 행은 메시지 하나야. 행을 ticket_id로 묶어 줘. 이것이 대화의 externalId이고, message_id는 각 메시지의 externalId로 써 줘.
고객 메시지는 incoming, 상담원 답장은 outgoing, 비공개 댓글은 note로 처리해 줘.
created_at을 sentAt으로 쓰고(시간은 UTC야), attachment_url은 attachments에 써 줘.
먼저 대화 5개를 가져와서 Sonny에서 확인할 수 있게 해 주고, 그다음 나머지를 20개씩 배치로 가져온 뒤 총계를 보여 줘.가져오는 항목
- 대화
- 제목, 상태, 태그, 담당자가 채널의 채팅 또는 이메일 대화로 들어와요.
- 메시지
- 고객 메시지, 팀 답장, 내부 메모, 챗봇 답장이 각각 원래 날짜와 시간 그대로 들어와요.
- 연락처
- 이메일 주소로 일치시키고, 새 연락처는 만들어요. Sonny에 이미 있는 연락처는 절대 바뀌지 않아요.
- 첨부 파일
- 이미지, PDF, 문서, 스프레드시트, ZIP 파일을 25MB까지 가져와요. 공개 링크나 파일 자체로 보낸 것 모두 가능해요.
가져오기 형식
AI는 대화를 이런 형태로 보내요. 직접 작성할 필요는 없지만, 각 필드가 무슨 역할을 하는지 알아 두면 도움이 돼요.
{
"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이에요. 채널에 웹사이트가 있으면 기본값은 chat이에요.
attachments- 파일이에요. 각각 공개 https url로 지정하거나 fileName, contentType, dataBase64로 지정하세요.
tags- 태그 이름이에요. 새 태그는 자동으로 만들어져요.
assigneeEmail- 대화를 배정할 팀원이에요.
알아 두면 좋아요
- 다시 실행해도 안전해요. 가져오기가 중간에 멈추면 다시 실행하세요. 이미 들어온 메시지는 건너뛰고, 실패한 첨부 파일은 다시 시도해요.
- 배치. 한 번의 호출로 대화 50개, 메시지 1,000개, 첨부 파일 25개까지 처리해요. 더 큰 가져오기는 AI가 알아서 나눠요.
- 이메일 주소가 없나요? 연락처 없이도 대화는 가져와져요. 고객 이름은 메시지에 그대로 남아요.
- 팀원. 작성자의 이메일이 워크스페이스의 누군가와 일치하면 답장이 그 팀원에게 연결돼요. 일치하지 않으면 이전 도구의 이름이 그대로 유지돼요.
- 가져올 수 있는 사람. 소유자, 관리자, 상담원이에요. API 키에는 대화, 메시지, 연락처에 대한 쓰기 권한이 필요하고, 파일을 가져오려면 첨부 파일 권한도 필요해요.
개발자용
AI 어시스턴트를 쓰지 않나요? API 키로 같은 JSON을 POST /api/v1/conversations/import에 보내세요. 전체 스키마는 API 레퍼런스에 있어요.