목차
4.2.4 FAQ에서 "문의하기" 클릭 시 표시되는 주제 필터링
사전 요구 사항
- RN v0.60 이상은 Freshchat SDK v2.0.0부터 지원됩니다.
APP ID, APP Key, 및 도메인 가져오기
- 귀하의 Freshchat 계정은 고유한 APP ID 및 APP Key와 연결되어 있으며, 이를 사용하여 모바일 SDK를 Freshchat과 통합할 수 있습니다.
- 계정 소유자/관리자로 Freshchat 계정에 로그인 > 관리자 > 모바일 SDK로 이동합니다. 여기에서 APP ID, APP Key 및 도메인을 찾을 수 있습니다.
1. 프로젝트에 Freshchat SDK 추가하기
- Freshchat 노드 패키지 이름은 ‘react-native-freshchat-sdk’입니다.
- 리액트 네이티브 프로젝트의 Package.json 파일에서, 종속성 아래에 ”react-native-freshchat-sdk”: “{{latest-version}}”을 추가합니다.
최신 SDK 버전은 다음 링크를 참조하세요: https://www.npmjs.com/package/react-native-freshchat-sdk
1.1. iOS 설정
RN 버전 | Freshchat 버전 | 단계 |
0.60+ | 2.0.0+ | 아래 명령어를 실행하여 SDK를 자동 연결합니다. cd ios pod install |
< 0.60 | 2.0.0+ | 1. ios 프로젝트 디렉토리 내에 Podfile이 있는지 확인하세요. 없다면 ios 프로젝트 디렉토리 내에서 pod를 초기화하고 Podfile에 React 종속성을 추가하세요. React 종속성은 이 표 아래에 제공됩니다. 2. 그런 다음 다음 명령어를 사용하여 React 네이티브 Freshchat SDK를 연결하세요, react-native link react-native-freshchat-sdk |
< 0.60 | < 2.0.0 | 1. 다음 명령어를 사용하여 React 네이티브 Freshchat SDK를 연결하세요, react-native link react-native-freshchat-sdk 2. 리액트 네이티브 프로젝트의 ios 폴더로 이동하세요. 3. Podfile에 아래와 같이 FreshchatSDK 항목을 추가하세요, target 'ProjectName' do pod 'FreshchatSDK', :path=> '../node_modules/react-native-freshchat-sdk/ios/FreshchatSDK.podspec' end 4. iOS 디렉토리에서 pod install을 실행하세요 |
0.60+ | < 2.0.0 | Freshchat SDK 2.0.0+만 RN v0.60+와 호환됩니다. |
RN < 0.60 및 Freshchat SDK 2.0.0+의 React 종속성
# React Native requirements pod 'React', :path => '../node_modules/react-native', :subspecs => [ 'Core', 'CxxBridge', # Include this for RN >= 0.47 'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43 'RCTText', 'RCTNetwork', 'RCTWebSocket', # Needed for debugging 'RCTAnimation', # Needed for FlatList and animations running on native UI thread # Add any other subspecs you want to use in your project ] # Explicitly include Yoga if you are using RN >= 0.42.0 pod 'yoga', :path => '../node_modules/react- native/ReactCommon/yoga' pod 'DoubleConversion', :podspec => '../node_modules/react- native/third-party-podspecs/DoubleConversion.podspec' pod 'glog', :podspec => '../node_modules/react-native/third-party- podspecs/glog.podspec' pod 'Folly', :podspec => '../node_modules/react-native/third-party- podspecs/Folly.podspec'
기존 Freshchat 통합을 Freshchat SDK 2.0.0+로 마이그레이션
- 다음 명령어를 사용하여 리액트 프로젝트에서 React 네이티브 Freshchat SDK를 연결 해제합니다.
react-native unlink react-native-freshchat-sdk
- iOS 프로젝트 내의 Podfile에서 다음 줄을 제거합니다. pod 'FreshchatSDK', :path=> '../node_modules/react-native-freshchat-sdk/ios/FreshchatSDK.podspec'
- 위의 표를 참조하여 필요에 따라 단계를 선택하세요.
1.2. Android 설정
프로젝트 레벨 build.gradle 파일에 maven { url "https://jitpack.io" }를 추가하세요.
allprojects
{
repositories
{
.....
maven { url "https://jitpack.io"
}
}
}RN 버전 < 0.60을 사용하는 경우, 아래 명령어를 실행하세요:
react-native link react-native-freshchat-sdk
2. SDK 초기화
Freshchat SDK의 다른 기능을 호출하거나 사용하기 전에 app id와 app key를 사용하여 Freshchat.init()을 호출하세요.
앱의 런처/지원 화면 실행 시 init()을 호출하는 것을 권장합니다. Freshchat SDK는 init() 중에 구성 요소의 존재 여부를 확인하며, 구성 요소가 없거나 매니페스트 항목이 없는 경우 경고를 표시합니다.
다음 코드 스니펫에서 YOUR-APP-ID와 YOUR-APP-KEY를 실제 app ID와 app key로 바꾸세요.
import { Freshchat, FreshchatConfig } from 'react-native-freshchat-sdk';
var freshchatConfig = new FreshchatConfig(APP_ID, APP_KEY);
freshchatConfig.domain = "YOUR-DOMAIN";
Freshchat.init(freshchatConfig);2.1 초기화 구성 옵션
초기화 전에 구성에서 카메라 캡처와 같은 기능을 활성화하거나 비활성화할 수 있습니다.
var freshchatConfig = new FreshchatConfig(APP_ID, APP_KEY); freshchatConfig.domain = "YOUR-DOMAIN"; freshchatConfig.teamMemberInfoVisible = true; freshchatConfig.cameraCaptureEnabled = true; freshchatConfig.gallerySelectionEnabled = true; freshchatConfig.responseExpectationEnabled = true; freshchatConfig.showNotificationBanner = true; //iOS only freshchatConfig.notificationSoundEnabled = true; //iOS only freshchatConfig.themeName = "CustomTheme.plist"; //iOS only freshchatConfig.stringsBundle = "FCCustomLocalizable"; //iOS only Freshchat.init(freshchatConfig);
3. 사용자 정보
3.1 사용자 정보 업데이트
상담원이 사용자와 메시지를 주고받을 때 더 많은 컨텍스트를 제공하기 위해 언제든지 기본 사용자 정보를 보낼 수 있습니다.
import { FreshchatUser } from 'react-native-freshchat-sdk';
var freshchatUser = new FreshchatUser();
freshchatUser.firstName = "John";
freshchatUser.lastName = "Doe";
freshchatUser.email = "johndoe@dead.man";
freshchatUser.phoneCountryCode = "+91";
freshchatUser.phone = "1234234123";
Freshchat.setUser(freshchatUser, (error) =>
{
console.log(error)
})3.2 사용자 속성 업데이트 (메타 데이터)
사용자 및 앱의 이벤트에 대한 추가 메타데이터를 캡처하고 보낼 수 있으며, 이는 나중에 메시지를 푸시할 사용자 세그먼트를 만드는 방법이 됩니다.
/var userPropertiesJson =
{
"user_type": "Paid",
"plan": "Gold"
}
Freshchat.setUserProperties(userPropertiesJson, (error) =>
{
console.log(error);
});3.3 사용자 데이터 재설정
로그아웃 시 또는 앱 내 사용자 작업에 따라 적절하다고 판단될 때 resetUser API를 호출하여 사용자 데이터를 재설정합니다.
Freshchat.resetUser();
3.4 사용자 복원
장치/세션/플랫폼 간의 채팅 메시지를 유지하려면 모바일 앱이 사용자에 대해 동일한 외부 ID 및 복원 ID 조합을 전달해야 합니다. 이를 통해 사용자는 Android, iOS 및 웹과 같은 지원되는 플랫폼에서 대화를 원활하게 이어갈 수 있습니다.
- 외부 ID: 이는 (이상적으로) 사용자 ID 또는 이메일 ID와 같은 시스템의 사용자에 대한 고유 식별자여야 하며 Freshchat.identifyUser() API를 사용하여 설정됩니다. 이는 사용자에 대해 설정된 후 변경할 수 없습니다.
- 복원 ID: 이는 외부 ID가 설정된 경우 현재 사용자에 대해 Freshchat에서 생성되며 Freshchat.getUser().getRestoreId() API를 사용하여 언제든지 검색할 수 있습니다. 앱은 동일한 장치 또는 장치 및 플랫폼 간의 세션에서 채팅 대화를 계속하기 위해 외부 ID 및 복원 ID 조합을 Freshchat SDK에 저장하고 나중에 제공할 책임이 있습니다.
알림은 한 번에 하나의 모바일 장치에서만 지원되며 현재 마지막으로 복원된 장치 또는 마지막으로 업데이트된 푸시 토큰이 있는 장치입니다.
외부 ID 설정
Freshchat.identifyUser("EXTERNAL_ID", null, (error) =>
{
console.log(error);
});복원 ID 검색
Freshchat.getUser((user) =>
{
var restoreId = user.restoreId;
console.log("restoreId: " + restoreId);
})외부 ID 및 복원 ID로 사용자 조회 및 복원
Freshchat.identifyUser("EXTERNAL_ID", "RESTORE_ID", (error) =>
{
console.log(error);
});복원 ID 생성 이벤트 수신
복원 ID 생성은 비동기 프로세스입니다. 이 이벤트를 애플리케이션 수명 주기 동안 수신해야 합니다. 일반적으로 사용자가 대화를 시작한 후 생성이 발생합니다.
복원 ID 생성 이벤트 등록
Freshchat.addEventListener(
Freshchat.EVENT_USER_RESTORE_ID_GENERATED,
() =>
{
console.log("onRestoreIdUpdated triggered");
Freshchat.getUser((user) =>
{
var restoreId = user.restoreId;
var externalId = user.externalId;
console.log("externalId: " + externalId);
console.log("restoreId: " + restoreId);
})
}
);3.5 Freshchat 사용자 ID 가져오기
getFreshchatUserId() API를 사용하여 사용자의 고유 식별자를 가져올 수 있습니다.
Freshchat.getFreshchatUserId((data) =>
{
console.log(data);
});4. 지원 솔루션 실행
아래 스니펫을 사용하여 앱의 호출 작업에서 FAQ 또는 대화 기반 지원 경험을 시작하세요. 호출 작업 또는 진입점은 화면의 버튼이나 메뉴 항목일 수 있습니다.
4.1 대화
메뉴 선택이나 버튼 클릭 이벤트와 같은 특정 UI 이벤트에 응답하여 showConversations() API를 호출하여 대화 흐름을 시작하세요. 앱에 여러 주제가 구성된 경우 사용자는 주제 목록을 보게 됩니다. 주제 목록은 메시지가 없는 경우 대시보드에 지정된 순서대로 정렬됩니다. 메시지가 있는 경우 순서는 가장 최근에 사용된 순서에 따라 정렬됩니다.
앱 화면의 버튼 클릭으로 대화 목록 시작
Freshchat.showConversations();
4.1.1 주제 필터링
특정 용어로 태그된 주제만 필터링하여 표시하려면 아래와 같이 showConversations() API에 전달된 ConversationOptions 인스턴스에서 filterByTags API를 사용하세요.
예: 앱의 주문 페이지에서 특정 주제를 연결하고 표시하려면 해당 주제를 "order_queries"라는 용어로 태그할 수 있습니다.
import { ConversationOptions } from 'react-native-freshchat-sdk';
var conversationOptions = new ConversationOptions();
conversationOptions.tags = ["premium"];
conversationOptions.filteredViewTitle = "Premium Support";
Freshchat.showConversations(conversationOptions);showConversations() API를 사용할 때 일반적으로 표시되지 않는 주제도 태그가 지정되고 특정 태그가 showConversations() API에 전달된 ConversationOptions 인스턴스의 filterByTags API에 전달되면 표시됩니다.
4.1.2 읽지 않은 메시지 수
앱 실행 시 또는 특정 이벤트에서 사용자의 읽지 않은 메시지 수를 얻으려면 getUnreadCountAsync API를 사용하여 수를 표시하세요.
Freshchat.getUnreadCountAsync((data) =>
{
console.log(data);
});앱이 열려 있을 때 읽지 않은 메시지 수의 변경 사항을 수신하도록 선택할 수도 있습니다.
읽지 않은 메시지 수 이벤트 수신
Freshchat.addEventListener(
Freshchat.EVENT_UNREAD_MESSAGE_COUNT_CHANGED,
() =>
{
console.log("onUnreadMessageCountChanged triggered");
Freshchat.getUnreadCountAsync((data) =>
{
var count = data.count;
var status = data.status;
if (status)
{
console.log("Message count: " + count);
} else
{
console.log("getUnreadCountAsync unsuccessful");
}
});
}
);4.1.3 태그로 필터링된 대화에서 읽지 않은 메시지 수
사용자가 태그로 필터링된 특정 대화에서 읽지 않은 메시지 수를 얻으려면 getUnreadCountAsync API를 사용하세요.
const getUnreadCountAsyncForTags = () =>
{
Freshchat.getUnreadCountAsync(
{
tags: ["new", "test"]
},
(data) =>
{
console.log(data);
});
};4.2. FAQ
메뉴 선택이나 버튼 클릭 이벤트와 같은 특정 UI 이벤트에 응답하여 showFAQs() API를 호출하여 FAQ 화면을 시작하세요. 기본적으로 FAQ 카테고리는 그리드로 표시되며 하단에 "문의하기" 버튼이 있습니다. 이를 사용자 정의하려면 FAQ 옵션을 확인하세요.
Freshchat.showFAQs();
4.2.1 FAQ 옵션
FAQ 흐름의 사용자 정의는 showFAQs() API에 전달된 FaqOptions 인스턴스에서 관련 옵션을 지정하여 달성할 수 있습니다.
import { FaqOptions } from 'react-native-freshchat-sdk';
var faqOptions = new FaqOptions();
faqOptions.tags = ["premium"];
faqOptions.filteredViewTitle = "Tags";
faqOptions.filterType = FaqOptions.FilterType.ARTICLE;
Freshchat.showFAQs(faqOptions);- filteredViewTitle: 필터가 적용된 결과 목록 페이지에 주어진 제목입니다.
- tags: 필터가 적용되는 태그의 이름입니다.
- filterType: 카테고리/기사. 카테고리 - 기사와 하위 카테고리의 조합. 기사 - 기사만 포함합니다.
4.2.2 태그로 FAQ 카테고리 필터링
특정 용어로 태그된 FAQ 카테고리만 필터링하여 표시하려면 아래와 같이 showFAQs() API에 전달된 FAQOptions 인스턴스에서 필터 유형을 카테고리로 설정하여 filterByTags API를 사용하세요.
예: 특정 사용자 유형과 관련된 FAQ 카테고리를 표시하려면 해당 FAQ 카테고리를 "premium"이라는 용어로 태그할 수 있습니다.
import { FaqOptions } from 'react-native-freshchat-sdk';
var faqOptions = new FaqOptions();
faqOptions.tags = ["premium"];
faqOptions.filteredViewTitle = "Tags";
faqOptions.filterType = FaqOptions.FilterType.CATEGORY;
Freshchat.showFAQs(faqOptions);4.2.3 태그로 FAQ 기사 필터링
특정 용어로 태그된 FAQ만 필터링하여 표시하려면 아래와 같이 showFAQs() API에 전달된 FAQOptions 인스턴스에서 필터 유형을 기사로 설정하여 filterByTags API를 사용하세요.
예: 결제 실패와 관련된 FAQ를 연결하려면 해당 FAQ를 "payment_failure"라는 용어로 태그하고 앱의 결제 페이지에서 연결할 수 있습니다.
import { FaqOptions } from 'react-native-freshchat-sdk';
var faqOptions = new FaqOptions();
faqOptions.tags = ["premium"];
faqOptions.filteredViewTitle = "Tags";
faqOptions.filterType = FaqOptions.FilterType.ARTICLE;
Freshchat.showFAQs(faqOptions);4.2.4 FAQ에서 "문의하기" 클릭 시 표시되는 주제 필터링
FAQ 화면에서 사용자가 "문의하기"를 클릭할 때 특정 용어로 태그된 주제만 필터링하여 표시하려면 아래와 같이 showFAQs() API에 전달된 FAQOptions 인스턴스에서 filterContactUsByTags API를 사용하세요.
FAQ 흐름 내에서 "문의하기"의 기본 동작은 showConversations()를 호출하는 것과 동일합니다. 즉, 태그를 filterContactUsByTags API에 전달하여 주제 필터링이 활성화되지 않은 경우 "모든 사용자에게 표시"로 표시이 문서가 도움이 되었나요?
Freshchat AI 도우미
Freshchat React Native SDK 통합 단계
AI 어시스턴트 초기화 중...