項目需要集成環(huán)信客服系統(tǒng),這兩天的摸爬滾打和客服溝通后整理一篇文章,以作備份
環(huán)信的客服真的真的真的很贊-我寫的環(huán)信客服云demo地址:https://gitee.com/lalzxy/huanxinkefuim。
詳細(xì)集成步驟如下:
SDK方面
1.先把?移動客服:商城”demo源碼和HelpDeskUI(iOS)?下載下來,該SDK基于IM SDK 3.x,如同時使用環(huán)信IM功能(非音視頻),需使用此文檔中的初始化、登錄、登出操作,不需要添加IM的SDK,其IMSDK-API正常使用。
2.打開下載好的demo,架構(gòu)如下圖

將HelpDeskDynamicSDK和HelpDeskUI兩個文件夾,在Finder中復(fù)制到自己的項目的適當(dāng)路徑中(這個地方有個坑,稍后下午詳細(xì)說明),然后拖拽到項目時選擇?Create groups。
添加HelpDeskUI報Passing ‘CGFloat’(aka ‘double’) to parameter of incompatible type ‘__strong id’*/錯誤,就在pch定義如下宏
#define MAS_SHORTHAND_GLOBALS
3.選中當(dāng)前的TARGET,向 General → Embedded Binaries 中添加以上兩個依賴庫。Linked Frameworks and Libraries 中會自動增加。

4.Build Phases ---> Link Binary With Libraries 中添加依賴庫

????如下圖:

5.Build Settings ---> Linking ---> Other Linker Flags 中增加 -ObjC。
6.SDK 不支持 bitcode,在 Build Settings ---> Build Options ---> Enable Bitcode 中設(shè)置 NO。

7.在工程info.plist文件中 增加隱私權(quán)限

Privacy - Photo Library Usage Description 需要訪問您的相冊
Privacy - Microphone Usage Description 需要訪問您的麥克風(fēng)
Privacy - Camera Usage Description 需要訪問您的攝像機(jī)
詳細(xì)的權(quán)限設(shè)置,請?點(diǎn)我點(diǎn)我。
8.在 .pch 中 或者 全局的 .h 中添加如下代碼:

9.編譯提示'SCLoginManager.h' file not found,將demo里SCLoginManager.h和SCLoginManager.m拖入工程,此時會報'HDChatViewController.h' file not found,將HDChatViewController、AppDelegate+HelpDesk、HFileViewController、LocalDefine.h拖入工程。
10.如報'Bugly/Bugly.h' file not found,選擇target-Build Phases-Linker Binary With Libraies-選擇+號-Add Other-選擇demo里的Bugly.framework,將#import "LocalDefine.h"、#import "SCLoginManager.h"加入pch
11.編譯工程提示:

將SVProgressHUD庫文件夾拖入工程,并在pch中引入。
12.再次編譯工程如下:

在pch中引入#import "UIButton+WebCache.h",再次編譯成功。
創(chuàng)建APP關(guān)聯(lián)
上面的步驟依據(jù)文檔 可以輕松完成,但是APP相關(guān)關(guān)聯(lián),就比較坑了,如果沒有集成過環(huán)信聊天的經(jīng)歷的話很容易碼入誤區(qū),下面請緊跟隨筆者步驟:
1.需要申請兩個賬號:移動客服后臺、環(huán)信管理后臺,如果已經(jīng)有了請下一步。
2.先在?環(huán)信管理后臺?創(chuàng)建應(yīng)用
點(diǎn)擊應(yīng)用顯示應(yīng)用的信息(** AppKey、Client ID、Client Secret** 這幾個要記著)

3.在?環(huán)信管理后臺?注冊IM用戶(名稱要記著)-點(diǎn)擊剛注冊應(yīng)用名稱-選擇IM用戶-選擇注冊IM用戶

4.移至?環(huán)信管理后臺?創(chuàng)建APP關(guān)聯(lián)(?官方文檔,官方文檔介紹有些不全面,而且有點(diǎn)不全面 )
登錄客服賬號在后臺右上角選擇?管理員模式?--->?渠道管理?--->?手機(jī)APP?--->?添加APP關(guān)聯(lián)?--->?去關(guān)聯(lián)IM賬號

5.輸入關(guān)聯(lián)的應(yīng)用的信息,下圖方框中為所關(guān)聯(lián)應(yīng)用創(chuàng)建的IM用戶

輸入完畢,保存即可如下圖

6.記下?tenantId?租戶ID,下文用到:設(shè)置?--->?企業(yè)信息

7.上面步驟完成后,官方文檔中沒有提及的一步:?設(shè)置--->會話分配規(guī)則

如編譯提示dyld: Library not loaded: @rpath/HelpDesk.framework/HelpDesk
? Referenced from: /var/containers/Bundle/Application/C4B01F93-FD51-472F-A535-9220E246D8DD/環(huán)信客服集成.app/環(huán)信客服集成
? Reason: image not found
說明HelpDesk.framework沒有加上

集成客服成功進(jìn)入聊天頁面
1.輸入表情符號,顯示表情字符串,將下面代碼復(fù)制到AppDelegate入口函數(shù)里。
[[HDEmotionEscape sharedInstance] setEaseEmotionEscapePattern:@"\\[[^\\[\\]]{1,3}\\]"];
? ? [[HDEmotionEscape sharedInstance] setEaseEmotionEscapeDictionary:[HDConvertToCommonEmoticonsHelper emotionsDictionary]];
2.輸入框顯示英文input? a new message,創(chuàng)建Localizable.strings語言環(huán)境,步驟如下:
? ? 1.創(chuàng)建Localizable.strings,選擇Strings File,取名為Localizable.strings,一定要這個名字

2.選擇如圖“+”,選擇Chiness(Simpified)

3.在Localization中勾選Chinese(Simplified)

4.將Localizable.strings展開,分別在下面二個文件中輸入內(nèi)容,可參考另外一個Demo,環(huán)信(IM)

修改聊天頁面導(dǎo)航欄標(biāo)題直接創(chuàng)建個控制器繼承HDMessageViewController,設(shè)置self.navigationitem.title,設(shè)置企業(yè)歡迎語都在HDMessageViewController.m里
聊天頁面顯示歷史消息,而不是每次進(jìn)來都是空白聊天頁面,在繼承HDMessageViewController控制器里調(diào)用tableViewDidTriggerHeaderRefreshz這個方法
設(shè)置客服、訪客昵稱和頭像

發(fā)送帶訪客屬性的消息給客服-訪客昵稱也可以在這里設(shè)置

App退到后臺無法收到通知消息-這時候調(diào)用的是本地通知,如下圖
? ? ? ? 1.實(shí)現(xiàn)代理? ?2.監(jiān)聽代理方法? 3.在代理方法里調(diào)用環(huán)信demo的showNotificationWithMessage這個方法

集成離線推送消息通知-收不到通知,看如下圖片




發(fā)送訂單信息給客服(安裝環(huán)信文檔集成,第一次進(jìn)入聊天頁面沒有發(fā)送訂單信息-這里直接是參考環(huán)信demo)

集成環(huán)信客服功能過程中的遇到一些問題
1.由于環(huán)信客服SDK集成了一些常用的第三方的庫,如果項目本身也存在這些第三方的庫,就 會引起沖突,刪除掉,然后把報錯的地方修改成正常的調(diào)用即可

2.和客服溝通后對一些疑問的整理:
Q:在APP中集成了客服系統(tǒng)后 客戶 和 客服 之間的關(guān)系如何協(xié)調(diào)?
A:IM服務(wù)號就是 IM用戶,你新注冊一個IM用戶 然后用于綁定IM服務(wù)號的,然后客戶端登錄的用戶 都與這個綁定的IM服務(wù)號聊天,客服系統(tǒng)將與這個IM服務(wù)號聊天的會話分配給客服
Q:注冊的IM用戶 相當(dāng)于 客服和用戶之前的 樞紐么
M:可以這么理解
Q:為什么 這個賬號可以在服務(wù)端注冊,也可以在后臺管理系統(tǒng)手動添加啊
M:其實(shí)都是一個接口操作的,服務(wù)器端的rest接口
Q:是不是 服務(wù)端返回的用于登陸的IM賬號不同 APP用戶關(guān)聯(lián)的客服也不同了吶?
M:未必,移動客服那邊綁定一個IM服務(wù)號就夠用了,客戶端登錄的其他IM用戶(服務(wù)端返回的或者注冊的)都給這個移動客服綁定的IM服務(wù)號發(fā)消息,環(huán)信的客服系統(tǒng)就能收到客戶端發(fā)送過來的消息了