채팅 확장 기능


채팅 확장 기능을 사용하면 봇에서 사용자가 자신의 대화에 직접 적용할 수 있는 대화식 소셜 기능을 제공할 수 있습니다.
목차
  1. 개요
  2. 리스트 진입점 구성
  3. 공유
  4. 사용자 ID 및 대화 컨텍스트 가져오기
  5. 권한 관리
  6. 팁 및 모범 사례
  7. FAQ 및 문제 해결

개요

상호작용 모델

채팅 확장 기능은 사용자가 연결된 봇에 참여한 후 Messenger의 작성 도구 리스트에 표시됩니다.

사용자가 채팅 확장 기능의 아이콘을 누르면 개발자가 지정한 WebView 기반 UI가 열립니다. 그런 다음 사용자가 대화에서 공유할 콘텐츠를 만들거나 선택할 수 있습니다. 대화에 공유하는 메시지에는 이미지, 링크 등을 포함할 수 있습니다.

그룹의 사용자가 이 방법으로 공유된 메시지에 참여하는 경우 개발자가 대화의 컨텍스트 정보, 권한 요청, 기타 Messenger 확장 기능 JavaScript SDK의 모든 기능을 이용할 수 있습니다.

잠재적 사용 사례

  • 표현: Messenger 내에서 바로 스티커 또는 재미있는 이미지를 만들 수 있습니다. 노래, 동영상 또는 기타 콘텐츠를 공유할 수 있습니다.
  • 미디어: 내가 팔로우하는 주제에 대한 스토리가 있으면 그룹에 보낼 수 있습니다.
  • 상거래: 그룹 정렬 및 계획
  • 생산성: 작업 추적 도구에서 업데이트를 보내고 공동으로 문서를 수정할 수 있습니다.
  • 엔터테인먼트: 게임 또는 그룹 과제를 만들 수 있습니다.

샘플 프로젝트

Facebook은 여기 설명된 모든 기능이 포함된 봇인 TaskBot을 오픈 소스로 공개했습니다.


Messenger에서 사용해보기 →Github 보고서 →

리스트 진입점 구성

봇을 추가한 사람들의 리스트에 봇을 표시하려면 홈 URL을 설정해야 합니다.

채팅 확장 기능을 출시할 준비가 되지 않은 경우에는 in_testtrue로 설정하여 준비될 때까지 개발자가 아닌 사용자에게 표시되지 않도록 하세요.

더 알아보기 →

공유

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을 제어하여 최대의 효과를 얻는 방법
  • 이전 버전과의 호환성을 보장하는 방법
더 알아보기 →

Design Kit

채팅 확장 기능을 디자인할 준비가 되셨나요? 필요한 구성 요소가 모두 포함된 Facebook의 편리한 스케치 파일을 확인하세요.

키트 다운로드 →

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_extensionstrue로 설정되도록 하세요. 여기에는 다음과 같은 항목이 포함됩니다.


질문: 채팅 확장 기능을 만들었는데 작성 도구 리스트에 표시할 수 없습니다. 어떻게 수정해야 하나요?

다음 사항을 확인하세요.

  1. 표시하려는 페이지에 대한 올바른 페이지 액세스 토큰을 사용하여 해당 페이지에 home_url을 설정했는지 확인합니다. Facebook 페이지에서 다른 Facebook 페이지로 봇을 이전하는 경우 홈 URL이 이전되지 않습니다.

  2. 개발 모드에서 in_test 속성을 true로 설정한 경우 리스트를 확인하는 사람이 문제가 발생한 봇의 개발자 또는 테스터이거나 Facebook 페이지의 관리자인지 확인합니다. 봇을 공개적으로 출시한 경우 봇을 제출했으며 pages_messaging 권한이 승인되었는지 확인합니다.

  3. 봇이 연결된 Facebook 페이지가 게시되었는지 확인합니다.

  4. 봇 자체가 공개 모드인지 확인합니다.

  5. 이전에 봇과 대화한 적이 있는지 확인합니다.

  6. 작성 도구 리스트에 표시된 채팅 확장 기능이 캐시됩니다. 표시되는 데 잠시 시간이 필요할 수 있습니다.