@channel.io/channel-talk-integration-mcp
Version:
Channel Talk Integration MCP - Installation guides for Channel Talk SDK across multiple platforms
423 lines (328 loc) • 12.2 kB
JavaScript
import { z } from "zod";
export function registerGetAndroidGuideTool(server) {
server.tool("get_android_guide", `case1: 유저가 안드로이드 앱에 채널톡을 설치하는 방법을 알고 싶다고 말하면 이 툴을 호출합니다.
case2: 이전 툴의 next_step에서 get_android_guide를 호출해야할 경우 이 툴을 호출합니다.`, {
language: z
.enum(["ko", "en"])
.optional()
.describe("Language for the guide. Use 'en' for English, defaults to Korean if not specified"),
}, (args) => {
try {
const language = args.language;
const result = language === "en"
? getEnglishAndroidGuide()
: getKoreanAndroidGuide();
return {
content: [
{
type: "text",
text: JSON.stringify(result, null, 2),
},
],
};
}
catch (error) {
const message = error instanceof Error ? error.message : String(error);
throw new Error(`Failed to execute get_android_guide: ${message}`);
}
});
console.log("Registered tool: get_android_guide");
}
function getKoreanAndroidGuide() {
return {
result: `# 채널톡 Android SDK 설치 가이드
채널톡 Android SDK는 Kotlin/Java로 작성된 Android 애플리케이션에 상담을 위한 채팅 모듈과 마케팅 기능을 쉽게 설치할 수 있도록 도와줍니다.
## 📋 설치하기 전 요구사항
### 필수 조건
- **채널톡 유료 플랜** (무료 플랜은 SDK 사용 불가)
- **Android SDK ≥ 15** (실제 동작은 API 21 필요)
- **Android Gradle Plugin ≥ 8.0.0** (권장)
- **sourceCompatibility, targetCompatibility ≥ 1.8**
- **Kotlin 1.8.22** (SDK 사용 버전, 낮은 버전 시 의존성 충돌 가능)
사용자가 필수 조건을 완료했는지 물어보세요. 완료되지 않았다면 필수 조건을 완료하도록 안내해주세요.
특히 무료플랜일 경우 유료 플랜으로 업그레이드 하도록 안내해주세요.
### API 레벨 호환성
- **설치 가능**: Android SDK 15+
- **정상 동작**: Android API 21+ (Lollipop 5.0)
- **API 15~20**: 설치는 되지만 기능 이용 불가
---
## 🛠️ 설치 과정
${getAndroidInstallationSteps()}
---
## 🚀 SDK 구현 가이드
${getAndroidImplementationGuide()}
---
## 🔐 보안 권장사항
${getAndroidSecurityRecommendations()}
---
## 🔧 구현 체크리스트
${getAndroidChecklist()}
---
## 💡 문제 해결
### 자주 발생하는 이슈
1. **부트 실패**: 플러그인 키 확인, 네트워크 연결 확인
2. **의존성 충돌**: Kotlin 버전 확인, Gradle 설정 검토
3. **API 레벨 호환성**: 최소 API 21 확인
### 성능 최적화
- 부트는 앱 시작 시 한 번만 실행
- 불필요한 showChannelButton 호출 최소화
- @SkipAttachChannelView 적절히 활용
### 의존성 관리
- SDK는 가능한 한 의존성 충돌 방지를 위해 내부적으로 패키지 변경 사용
- 버전 충돌 발생 시 추가 Gradle 설정 필요
**📚 참고 문서**: https://developers.channel.io/reference/android-quickstart-kr
**📦 릴리즈 노트**: 최신 버전 정보 확인 필요`,
};
}
function getEnglishAndroidGuide() {
return {
result: `# Channel Talk Android SDK Installation Guide
The Channel Talk Android SDK helps you easily install chat modules and marketing features for customer support in Android applications written in Kotlin/Java.
## 📋 Requirements Before Installation
### Prerequisites
- **Channel Talk paid plan** (Free plan cannot use SDK)
- **Android SDK ≥ 15** (Actual operation requires API 21)
- **Android Gradle Plugin ≥ 8.0.0** (Recommended)
- **sourceCompatibility, targetCompatibility ≥ 1.8**
- **Kotlin 1.8.22** (SDK version used, lower versions may cause dependency conflicts)
Please ask if the user has completed the prerequisites. If not, guide them to complete the prerequisites.
Especially if they're on a free plan, guide them to upgrade to a paid plan.
### API Level Compatibility
- **Installation possible**: Android SDK 15+
- **Normal operation**: Android API 21+ (Lollipop 5.0)
- **API 15~20**: Installation possible but features unavailable
---
## 🛠️ Installation Process
${getAndroidInstallationSteps()}
---
## 🚀 SDK Implementation Guide
${getAndroidImplementationGuide()}
---
## 🔐 Security Recommendations
${getAndroidSecurityRecommendations()}
---
## 🔧 Implementation Checklist
${getAndroidChecklist()}
---
## 💡 Troubleshooting
### Common Issues
1. **Boot failure**: Check plugin key, network connection
2. **Dependency conflicts**: Check Kotlin version, review Gradle settings
3. **API level compatibility**: Ensure minimum API 21
### Performance Optimization
- Execute boot only once at app startup
- Minimize unnecessary showChannelButton calls
- Use @SkipAttachChannelView appropriately
### Dependency Management
- SDK uses internal package changes to prevent dependency conflicts when possible
- Additional Gradle configuration needed when version conflicts occur
**📚 Reference Documentation**: https://developers.channel.io/reference/android-quickstart
**📦 Release Notes**: Check for latest version information`,
};
}
function getAndroidInstallationSteps() {
return `### 1️⃣ 루트 build.gradle 설정
프로젝트 루트의 \`build.gradle\` 파일에 채널톡 Maven 저장소를 추가합니다:
\`\`\`groovy
// settings.gradle (또는 build.gradle)
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
// 채널톡 Maven 저장소 추가
maven { url 'https://maven.channel.io/maven2' }
}
}
\`\`\`
### 2️⃣ 앱 모듈 build.gradle 설정
앱 모듈의 \`build.gradle\` 파일에 의존성을 추가합니다:
\`\`\`groovy
dependencies {
implementation 'io.channel:plugin-android:$[version]'
// 최신 버전은 릴리즈 노트에서 확인
// 예: implementation 'io.channel:plugin-android:12.1.0'
}
\`\`\`
### 3️⃣ ProGuard 설정 (선택사항)
**SDK 10.0.0 이하 버전 사용 시에만** 필요합니다:
\`\`\`proguard
# proguard-rules.pro
-keep class com.zoyi.**{ *; }
-keep class io.channel.**{ *; }
-dontwarn com.zoyi.**
-dontwarn io.channel.**
\`\`\`
**SDK 10.0.1 이상**: ProGuard 설정이 자동으로 포함되어 별도 설정 불필요`;
}
function getAndroidImplementationGuide() {
return `### 1️⃣ Application 클래스에서 초기화
\`\`\`kotlin
// MyApplication.kt
import android.app.Application
import io.channel.ChannelIO
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
// 채널톡 SDK 초기화
ChannelIO.initialize(this)
}
}
\`\`\`
\`\`\`java
// Java 버전
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 채널톡 SDK 초기화
ChannelIO.initialize(this);
}
}
\`\`\`
### 2️⃣ AndroidManifest.xml에 Application 등록
\`\`\`xml
<application
android:name=".MyApplication"
android:usesCleartextTraffic="true"
... >
<!-- 기타 컴포넌트들 -->
</application>
\`\`\`
### 3️⃣ Boot 설정
#### 익명 유저로 부트
\`\`\`kotlin
import io.channel.ChannelIO
import io.channel.BootConfig
// 익명 유저 부트
val bootConfig = BootConfig.create("YOUR_PLUGIN_KEY") // 실제 키로 교체
ChannelIO.boot(bootConfig)
\`\`\`
#### 멤버 유저로 부트 (로그인 사용자)
\`\`\`kotlin
import io.channel.Profile
// 사용자 프로필 설정
val profile = Profile.create()
.setName("사용자명")
.setEmail("user@example.com")
.setProperty("homepageUrl", "channel.io")
.setProperty("customField1", "커스텀값1")
// 멤버 유저 부트 설정
val bootConfig = BootConfig.create("YOUR_PLUGIN_KEY")
.setMemberId("USER_UNIQUE_ID") // 유저 고유 ID
.setMemberHash("USER_MEMBER_HASH") // 보안을 위한 해시값
.setProfile(profile)
.setHidePopup(false) // 마케팅 팝업 표시 여부
.setTrackDefaultEvent(true) // 기본 이벤트 트래킹
ChannelIO.boot(bootConfig) { bootStatus, user ->
when (bootStatus) {
BootStatus.SUCCESS -> {
println("채널톡 부트 성공: $user")
}
else -> {
println("채널톡 부트 실패: $bootStatus")
}
}
}
\`\`\`
### 4️⃣ 채널 버튼 제어
\`\`\`kotlin
// 채널 버튼 표시 (모든 액티비티에 표시)
ChannelIO.showChannelButton()
// 채널 버튼 숨기기 (모든 액티비티에서 숨김)
ChannelIO.hideChannelButton()
// 메신저 직접 열기
ChannelIO.open()
// 메신저 닫기
ChannelIO.close()
\`\`\`
### 5️⃣ 특정 액티비티에서 UI 숨기기
\`\`\`kotlin
import io.channel.SkipAttachChannelView
// 특정 액티비티에서 채널톡 UI 완전 숨김
@SkipAttachChannelView
class SkipButtonActivity : AppCompatActivity() {
// 이 액티비티에서는 채널 버튼과 팝업이 표시되지 않음
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_skip_button)
}
}
\`\`\`
### 6️⃣ 고급 기능
#### Sleep 모드 (이벤트 트래킹만 사용)
\`\`\`kotlin
// 채팅 상담, 마케팅 팝업 비활성화, 이벤트 트래킹과 푸시만 사용
ChannelIO.sleep()
\`\`\`
#### Shutdown (완전 종료)
\`\`\`kotlin
// SDK 모든 기능 중지 (재사용 시 다시 boot 필요)
// 로그아웃 시 사용 권장
ChannelIO.shutdown()
\`\`\`
#### 이벤트 트래킹
\`\`\`kotlin
// 사용자 행동 추적
ChannelIO.track("Purchase", mapOf(
"orderId" to "ORD-12345",
"amount" to 29.99,
"currency" to "USD"
))
ChannelIO.track("ViewProduct", mapOf(
"productId" to "PROD-001",
"category" to "Electronics"
))
\`\`\``;
}
function getAndroidSecurityRecommendations() {
return `### 멤버 해시 사용
\`\`\`kotlin
// ❌ 예측 가능한 memberId 사용 금지
val bootConfig = BootConfig.create("YOUR_PLUGIN_KEY")
.setMemberId("user@email.com") // 위험: 예측 가능
// ✅ 서버에서 생성한 해시값 사용 권장
val bootConfig = BootConfig.create("YOUR_PLUGIN_KEY")
.setMemberId("USER_UNIQUE_ID")
.setMemberHash(serverGeneratedHash) // 안전: 서버 생성 해시
\`\`\`
### Cleartext Traffic 설정
HTTP 링크 지원이 필요한 경우에만 사용:
\`\`\`xml
<!-- AndroidManifest.xml -->
<application
android:usesCleartextTraffic="true"
... >
\`\`\`
**⚠️ 보안 주의**: 모든 HTTP 요청 허용은 보안 위험을 증가시킬 수 있습니다.`;
}
function getAndroidChecklist() {
return `### 프로젝트 설정
- [ ] 채널톡 유료 플랜 가입 확인
- [ ] Android SDK 15+ 환경 확인
- [ ] Gradle Plugin 8.0.0+ 확인
- [ ] Kotlin 1.8.22 호환성 확인
### 의존성 설정
- [ ] 루트 build.gradle에 채널톡 Maven 저장소 추가
- [ ] 앱 build.gradle에 채널톡 SDK 의존성 추가
- [ ] SDK 10.0.0 이하 사용 시 ProGuard 설정
### 코드 구현
- [ ] Application 클래스 생성 및 초기화 코드 추가
- [ ] AndroidManifest.xml에 Application 등록
- [ ] 실제 플러그인 키로 "YOUR_PLUGIN_KEY" 교체
- [ ] 부트 설정 (익명 또는 멤버 유저)
- [ ] 채널 버튼 표시/숨김 로직 구현
### 고급 설정
- [ ] 특정 액티비티 UI 숨김 설정 (필요 시)
- [ ] 이벤트 트래킹 구현 (필요 시)
- [ ] Sleep/Shutdown 로직 구현 (필요 시)
### 보안 설정
- [ ] 멤버 유저 사용 시 memberHash 구현
- [ ] 서버 사이드 해시 생성 로직 구현
- [ ] Cleartext Traffic 필요성 검토
### 테스트
- [ ] 부트 성공/실패 상황 테스트
- [ ] 채널 버튼 표시 확인
- [ ] 메신저 정상 작동 확인
- [ ] 다양한 Android 버전에서 테스트`;
}
//# sourceMappingURL=get-android-guide.tool.js.map