채팅 확장 기능
채팅 확장 기능을 사용하면 봇에서 사용자가 자신의 대화에 직접 적용할 수 있는 대화식 소셜 기능을 제공할 수 있습니다.
목차
개요
상호작용 모델
채팅 확장 기능은 사용자가 연결된 봇에 참여한 후 Messenger의 작성 도구 리스트에 표시됩니다.
사용자가 채팅 확장 기능의 아이콘을 누르면 개발자가 지정한 WebView 기반 UI가 열립니다. 그런 다음 사용자가 대화에서 공유할 콘텐츠를 만들거나 선택할 수 있습니다. 대화에 공유하는 메시지에는 이미지, 링크 등을 포함할 수 있습니다.
그룹의 사용자가 이 방법으로 공유된 메시지에 참여하는 경우 개발자가 대화의 컨텍스트 정보, 권한 요청, 기타 Messenger 확장 기능 JavaScript SDK의 모든 기능을 이용할 수 있습니다.
잠재적 사용 사례
- 표현: Messenger 내에서 바로 스티커 또는 재미있는 이미지를 만들 수 있습니다. 노래, 동영상 또는 기타 콘텐츠를 공유할 수 있습니다.
- 미디어: 내가 팔로우하는 주제에 대한 스토리가 있으면 그룹에 보낼 수 있습니다.
- 상거래: 그룹 정렬 및 계획
- 생산성: 작업 추적 도구에서 업데이트를 보내고 공동으로 문서를 수정할 수 있습니다.
- 엔터테인먼트: 게임 또는 그룹 과제를 만들 수 있습니다.
리스트 진입점 구성
봇을 추가한 사람들의 리스트에 봇을 표시하려면 홈 URL을 설정해야 합니다.
채팅 확장 기능을 출시할 준비가 되지 않은 경우에는 in_test를 true로 설정하여 준비될 때까지 개발자가 아닌 사용자에게 표시되지 않도록 하세요.
공유
Messenger 플랫폼에서는 WebView에서의 맞춤 공유를 지원하므로 개발자가 봇에서 공유되는 메시지에 맞춤 메시지와 랜딩 페이지를 제공할 수 있습니다.
개발자가 채팅 확장 기능을 활용할 수 있도록 이러한 기능이 다양하게 개선되었습니다. 유의 사항:
현재 대화에 공유
beginShareFlow() 함수에는 이제 current_thread 모드를 지원하는 mode 매개변수가 있습니다. 이 매개변수를 사용하면 사용자가 다른 대화를 선택하는 대신 채팅 확장 기능을 호출한 대화에 공유할 수 있습니다. 대부분의 개발자는 확장 기능 자체 내에서 current_thread 모드를 선택해야 합니다.
사용자의 Messenger 버전이 이 모드를 지원하는지 확인해야 할 경우도 있습니다. getSupportedFeatures() 메서드를 사용하여 "sharing_direct" 키를 확인하세요.
공유에 대한 대응
beginShareFlow()에 대한 success 콜백은 오류가 발생하지 않는 한 사용자가 공유를 확인하거나 취소하거나 관계없이 호출됩니다.
Messenger에서 이제 success 콜백에 대한 응답에 is_sent 필드를 전달하여 메시지가 실제로 전송되었는지 알려줍니다.
사용자가 공유한 후 작업을 완료했으면 창을 닫거나 사용자를 플로의 다음 부분으로 유도하는 것이 좋습니다.
<script>
var messageToShare = { ... };
MessengerExtensions.beginShareFlow(function success(response) {
if(response.is_sent === true){
// User shared. We're done here!
MessengerExtensions.requestCloseBrowser();
}
else{
// User canceled their share!
}
},
function error(errorCode, errorMessage) {
// An error occurred trying to share!
},
messageToShare,
"current_thread");
</script>더 구체적인 내용은 beginShareFlow() 문서를 참조하세요.
사용자 ID 및 대화 컨텍스트 가져오기
다음 항목을 가져오려면 getContext() 함수를 호출하세요.
- 사용자 ID(PSID)
- 대화 ID
- 대화 유형
이 함수는 사용자가 봇과 대화를 열었는지와 관계없이 WebView를 만나는 모든 사용자가 사용할 수 있습니다.
이 방법으로 사용자 ID를 가져와도 사용자의 프로필을 가져올 수 있는 것은 아닙니다. 사용자의 프로필을 가져오려면 프로필 권한이 필요합니다.
더 알아보기 →
권한 관리
사용자가 봇과 대화를 시작하면 해당 사용자에게 메시지를 보낼 수 있을 뿐만 아니라 프로필을 가져올 수 있는 권한이 자동으로 부여됩니다. 봇을 차단하거나 대화를 삭제하는 사용자의 경우 권한이 취소합니다.
WebView를 통해 봇을 만나지만 봇과 대화를 시작하지 않은 사용자의 경우 이러한 권한을 요청할 수 있습니다. 이를 위해 Messenger 확장 기능 JavaScript SDK의 권한 기능을 사용할 수 있습니다.
더 알아보기 →팁 및 모범 사례
Messenger 플랫폼은 다음 사항을 포함하여 좋은 채팅 확장 기능을 만드는 방법에 대한 모범 사례를 제공합니다.
- 일반 접근 방법
- 여러 공유 모드를 사용하는 방법
- WebView chrome을 제어하여 최대의 효과를 얻는 방법
- 이전 버전과의 호환성을 보장하는 방법
FAQ 및 문제 해결
질문: 채팅 확장 기능을 개발하려면 봇이 있어야 하나요?
답변: 예. 채팅 확장 기능은 봇의 확장 기능입니다.
질문: 채팅 확장 기능이 작성 도구 리스트에 표시되는 이유는?
답변: 사용자가 연결된 봇과 상호작용한 후 해당 사용자의 작성 도구 리스트에 채팅 확장 기능이 표시됩니다.
질문: 채팅 확장 기능이 있어야만 사용자가 내 봇에서 공유할 수 있나요?
답변: 아니요. Messenger 플랫폼에서는 채팅 확장 기능 외에도 봇에서 사용자가 공유할 수 있는 다양한 방법을 제공합니다.
질문: 채팅 확장 기능이 있어야만 봇에서 WebView 및 Messenger 확장 기능 Javascript SDK를 사용할 수 있나요? 어떤 관련이 있나요?
답변: 아니요. 상관없습니다. 실제로 WebView는 채팅 확장 기능 외에도 여러 방법으로 호출될 수 있으며, 호출된 WebView에서 모두 Messenger 확장 기능을 사용할 수 있습니다.
질문: 채팅 확장 기능을 통해 메시지를 받은 사람이 해당 링크를 누르는 경우 Messenger 확장 기능 JavaScript SDK를 통해 어떤 기능을 사용할 수 있나요?
답변: 공유된 콘텐츠를 실행하는 사용자는 보낸 사람이 제공한 모든 기능을 사용할 수 있습니다. 개발자는 이를 통해 사용자 ID를 가져오고, 컨텍스트를 연결하고, 자체 콘텐츠를 공유하기 시작하는 등 다양하게 활용할 수 있습니다. 단, 이 경우 필요한 권한을 요청하기 전까지는 사용자 프로필에 액세스하거나 이러한 사용자에게 메시지를 보낼 수 없습니다.
질문: 채팅 확장 기능이 Messenger.com과 Facebook.com에서 작동하나요?
답변: 이 기능은 iOS와 Android에서만 지원됩니다. 웹 기반 클라이언트의 사용자는 채팅 확장 기능을 통해 공유된 링크를 클릭할 수 있지만, JavaScript SDK를 통해 제공된 기능은 사용할 수 없습니다. 자세한 내용은 채팅 확장 기능 모범 사례 가이드의 "이전 버전과의 호환성"을 참조하세요.
질문: 현재 대화와 공유하는 것과 방송과 공유하는 것의 차이는 무엇인가요?
답변: 채팅 확장 기능은 "current_thread"라고 하는 플로를 추가하여 이전에 출시된 WebView 공유 기능 위에 빌드됩니다.
사용자가 작성 도구를 사용하여 대화 내에서 봇을 호출한 경우 다른 사람이 아니라 대화 내에서 공유하기를 원할 것입니다. 따라서 "current_thread" 플로의 경우 사용자가 콘텐츠를 여러 대화에 방송하는 것이 아니라 현재 대화에 보내는 것을 확인할 수 있습니다.
질문: 최신 버전의 Messenger를 사용하는데 SDK가 WebView에서 작동하지 않습니다. 문제가 무엇인가요?
답변: 다음 사항을 확인하세요.
비공개 페이지: 봇이 첨부된 페이지가 게시되지 않으면 페이지에서 역할(예: 개발자, 관리자)이 없는 사용자의 경우 SDK를 읽어들이지 않습니다. 페이지에 사용자를 추가하거나 페이지를 게시하세요.
messenger_extension속성이 설정되지 않음: WebView가 열린 모든 곳에서messenger_extensions가true로 설정되도록 하세요. 여기에는 다음과 같은 항목이 포함됩니다.- 봇의 메뉴
- 봇이 보내는 메시지의 버튼
beginShareFlow()및 공유하기 버튼을 통해 공유되는 모든 메시지
도메인이 화이트리스트에 추가되지 않음: 페이지가 호스팅되는 도메인을 봇의 도메인 화이트리스트에 추가하세요.
추가 WebView 문제 해결 팁을 확인하세요.
질문: 채팅 확장 기능을 만들었는데 작성 도구 리스트에 표시할 수 없습니다. 어떻게 수정해야 하나요?
다음 사항을 확인하세요.
표시하려는 페이지에 대한 올바른 페이지 액세스 토큰을 사용하여 해당 페이지에
home_url을 설정했는지 확인합니다. Facebook 페이지에서 다른 Facebook 페이지로 봇을 이전하는 경우 홈 URL이 이전되지 않습니다.개발 모드에서
in_test속성을 true로 설정한 경우 리스트를 확인하는 사람이 문제가 발생한 봇의 개발자 또는 테스터이거나 Facebook 페이지의 관리자인지 확인합니다. 봇을 공개적으로 출시한 경우 봇을 제출했으며pages_messaging권한이 승인되었는지 확인합니다.봇이 연결된 Facebook 페이지가 게시되었는지 확인합니다.
봇 자체가 공개 모드인지 확인합니다.
이전에 봇과 대화한 적이 있는지 확인합니다.
작성 도구 리스트에 표시된 채팅 확장 기능이 캐시됩니다. 표시되는 데 잠시 시간이 필요할 수 있습니다.