QMConnect.h 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030
  1. //
  2. // QMConnect.h
  3. // QMLineSDK
  4. //
  5. // Created by haochongfeng on 2018/10/23.
  6. // Copyright © 2018年 haochongfeng. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <UIKit/UIKit.h>
  10. #import "QMLineDelegate.h"
  11. #import "QMMessage.h"
  12. @class CustomMessage;
  13. @class QMAgent;
  14. @class QMSessionOption;
  15. @class QMEvaluation;
  16. typedef enum : NSUInteger {
  17. QMServiceLineAliy = 0,
  18. QMServiceLineTencent,
  19. QMServiceLineHuawei,
  20. } QMServiceLine;
  21. @interface QMConnect : NSObject
  22. /**
  23. 注册accessId、初始化SDK:
  24. 初始化成功,建立tcp连接,保证移动端消息的接收,如果建立tcp连接失败,会导致消息接收不到
  25. 以通知的方式进行回调
  26. param accessId: 接入客服系统的密钥, 可在客服系统登录平台获取
  27. param userName: 用户名, 区分用户, 用户名可直接在后台显示
  28. param userId: 用户ID, 区分用户
  29. */
  30. + (void)registerSDKWithAppKey:(NSString *)accessId
  31. userName:(NSString *)userName
  32. userId:(NSString *)userId;
  33. /**
  34. 注册accessId、初始化SDK:
  35. 初始化成功,建立tcp连接,保证移动端消息的接收,如果建立tcp连接失败,会导致消息接收不到
  36. 以代理的方式进行回调
  37. param accessId: 接入客服系统的密钥, 可在客服系统登录平台获取
  38. param userName: 用户名, 区分用户, 用户名可直接在后台显示
  39. param userId: 用户ID, 区分用户
  40. */
  41. + (void)registerSDKWithAppKey:(NSString *)accessId
  42. userName:(NSString *)userName
  43. userId:(NSString *)userId
  44. delegate:(id<QMKRegisterDelegate>)delegate;
  45. /**
  46. 注销、断开tcp连接
  47. 客服人员可收到用户离开的通知
  48. */
  49. + (void)logout;
  50. /**
  51. 重连 socket
  52. */
  53. + (void)reConnectSocket;
  54. /*
  55. 切换线路服务,需要咨询对接是否需要使用 默认Aliy
  56. **/
  57. + (void)switchServiceRoute:(QMServiceLine)line;
  58. /**
  59. 自建服务器设置网络地址:
  60. 是不是自建服务器的用户不需要设置此项
  61. param tcpHost: TCP连接地址
  62. param tcpPort: TCP端口号
  63. param httpPost: HTTP请求地址
  64. */
  65. + (void)setServerAddress:(NSString *)tcpHost
  66. tcpPort:(int)tcpPort
  67. httpPost:(NSString *)httpPost;
  68. /*
  69. 推送的token
  70. 每次启动应用都需要重新设置
  71. **/
  72. + (void)setServerToken:(NSData *)deviceToken;
  73. /*
  74. 更改七牛服务地址
  75. **/
  76. + (void)setFileServer:(NSString *)fileUrl withZone:(NSString *)zoneUrl;
  77. /**
  78. 发起新会话:
  79. 调用此接口、可以拥有与客服对话的能力
  80. param peer: 技能组ID,客服平台配置多个技能组时,需要传入对应的技能组ID,会话才能接入到对应的技能组,
  81. param successBlock: 接入会话成功回调,回调参数为bool类型,判断后台是否开启问卷调查功能
  82. param failBlock: 接入会话失败回调,
  83. */
  84. + (void)sdkBeginNewChatSession:(NSString *)peerId
  85. successBlock:(void (^)(BOOL, NSString *))success
  86. failBlock:(void (^)(NSString *))failure;
  87. /**
  88. 发起新会话:
  89. 调用此接口、可以拥有与客服对话的能力
  90. @param peerId 技能组ID,客服平台配置多个技能组时,需要传入对应的技能组ID,会话才能接入到对应的技能组,
  91. @param delegate 设置代理方法
  92. @param success 接入会话成功回调,回调参数为bool类型,判断后台是否开启问卷调查功能
  93. @param failure 接入会话失败回调
  94. */
  95. + (void)sdkBeginNewChatSession:(NSString *)peerId
  96. delegate:(id<QMKServiceDelegate>)delegate
  97. successBlock:(void (^)(BOOL, NSString *))success
  98. failBlock:(void (^)(NSString *))failure;
  99. /**
  100. 发起新会话:
  101. 调用此接口、可以拥有与客服对话的能力
  102. param peer: 技能组ID,客服平台配置多个技能组时,需要传入对应的技能组ID,会话才能接入到对应的技能组,
  103. param params: @{@"agent":@"8000"} 专属坐席
  104. @{@"customField":@{@"姓名":@"李三"}} 自定义字段
  105. param successBlock: 接入会话成功回调,回调参数为bool类型,判断后台是否开启问卷调查功能
  106. param failBlock: 接入会话失败回调,
  107. */
  108. + (void)sdkBeginNewChatSession:(NSString *)peerId
  109. params:(NSDictionary *)params
  110. successBlock:(void (^)(BOOL, NSString *))success
  111. failBlock:(void (^)(NSString *))failure;
  112. /**
  113. 发起新会话:
  114. 调用此接口、可以拥有与客服对话的能力
  115. @param peerId 技能组ID,客服平台配置多个技能组时,需要传入对应的技能组ID,会话才能接入到对应的技能组,
  116. @param option 扩展信息配置 含VIP专属坐席 自定义字段
  117. @param success 接入会话成功回调,回调参数为bool类型,判断后台是否开启问卷调查功能
  118. @param failure 接入会话失败回调
  119. */
  120. + (void)sdkBeginNewChatSession:(NSString *)peerId
  121. option:(QMSessionOption *)option
  122. successBlock:(void (^)(BOOL, NSString *))success
  123. failBlock:(void (^)(NSString *))failure;
  124. /**
  125. 发起新会话:
  126. 启用日程管理的用此接口
  127. 调用此接口、可以拥有与客服对话的能力、携带参数
  128. param schedule: 日程id
  129. param processId: 流程id
  130. param currentNodeId: 入口节点中访客选择的流转节点ID
  131. param entranceId: 入口节点中的id
  132. param params: @{@"agent":@"8000"} 专属坐席
  133. @{@"customField":@{@"姓名":@"李三"}} 自定义字段
  134. param successBlock: 接入会话成功回调,回调参数为bool类型,判断后台是否开启问卷调查功能
  135. param failBlock: 接入会话失败回调,
  136. */
  137. + (void)sdkBeginNewChatSessionSchedule:(NSString *)scheduleId
  138. processId:(NSString *)processId
  139. currentNodeId:(NSString *)currentNodeId
  140. entranceId:(NSString *)entranceId
  141. params:(NSDictionary *)params
  142. successBlock:(void (^)(BOOL, NSString *))success
  143. failBlock:(void (^)(NSString *))failure;
  144. /**
  145. 发起新会话:
  146. 启用日程管理vip坐席失败之后用此接口
  147. 调用此接口、可以拥有与客服对话的能力、携带参数
  148. param schedule: 日程id
  149. param processId: 流程id
  150. param currentNodeId: 入口节点中访客选择的流转节点ID
  151. param entranceId: 入口节点中的id
  152. param successBlock: 接入会话成功回调,回调参数为bool类型,判断后台是否开启问卷调查功能
  153. param failBlock: 接入会话失败回调,
  154. */
  155. + (void)sdkBeginNewChatSessionSchedule:(NSString *)scheduleId
  156. processId:(NSString *)processId
  157. currentNodeId:(NSString *)currentNodeId
  158. entranceId:(NSString *)entranceId
  159. successBlock:(void (^)(BOOL, NSString *))success
  160. failBlock:(void (^)(NSString *))failure;
  161. /**
  162. 获取渠道全局配置中 globalSet
  163. 调用此接口获取后台的全局配置信息,注册成功会主动请求一次插入本地plist文件,用户也可以自行调用获取
  164. param successBlock: 成功回调
  165. param failBlock: 回调失败
  166. */
  167. + (void)sdkGetWebchatGlobleConfig:(void (^)(NSDictionary *))success
  168. failBlock:(void (^)(NSString *))failure;
  169. /**
  170. 获取渠道全局配置中的 scheduleConfig
  171. 调用此接口获取全局配置中的 scheduleConfig 此接口主要用于开启日程管理需要
  172. param configs: 配置信息
  173. param successBlock: 成功回调
  174. param failBlock: 回调失败
  175. */
  176. + (void)sdkGetWebchatScheduleConfig:(void (^)(NSDictionary *))success
  177. failBlock:(void (^)(NSString *))failure;
  178. /**
  179. 发送文本消息:
  180. 调用此接口、可以发送文本消息,包括文字、表情
  181. param text: 文本消息内容
  182. param successBlock: 成功回调
  183. param failBlock: 失败回调
  184. */
  185. + (void)sendMsgText:(NSString *)text
  186. successBlock:(void (^)(void))success
  187. failBlock:(void (^)(NSString *))failure;
  188. /**
  189. 发送图片消息:
  190. 调用此接口、可以发送图片消息
  191. param pic: 图片消息内容
  192. param successBlock: 成功回调
  193. param failBlock: 失败回调
  194. */
  195. + (void)sendMsgPic:(UIImage *)image
  196. successBlock:(void (^)(void))success
  197. failBlock:(void (^)(NSString *))failure;
  198. /**
  199. 发送图片消息:
  200. 调用此接口、可以发送图片消息
  201. param filePath: 图片文件相对路径
  202. param successBlock: 成功回调
  203. param failBlock: 失败回调
  204. */
  205. + (void)sendMsgImage:(NSString *)filePath
  206. successBlock:(void (^)(void))success
  207. failBlock:(void (^)(NSString *))failure;
  208. /**
  209. 发送语音消息:
  210. 调用此接口、可以发送语音消息
  211. param audio: 语音消息路径 语音名字需要带mp3后缀
  212. param duration: 语音消息时长
  213. param successBlock: 成功回调
  214. param failBlock: 失败回调
  215. */
  216. + (void)sendMsgAudio:(NSString *)audio
  217. duration:(NSString *)duartion
  218. successBlock:(void (^)(void))success
  219. failBlock:(void (^)(NSString *))failure;
  220. /**
  221. 语音转文本接口:
  222. param message: 消息model
  223. */
  224. + (void)sendMsgAudioToText:(CustomMessage *)message
  225. successBlock:(void (^)(void))success
  226. failBlock:(void (^)(void))failure;
  227. /**
  228. 发送文件消息:
  229. 调用此接口、可以发送文件消息
  230. param fileName: 文件名称
  231. param filePath: 沙盒文件相对路径
  232. param fileSize: 文件大小
  233. param progress: 上传进度回调
  234. param successBlock: 成功回调
  235. param failBlock: 失败回调
  236. */
  237. + (void)sendMsgFile:(NSString *)fileName
  238. filePath:(NSString *)filePath
  239. fileSize:(NSString *)fileSize
  240. progressHander:(void (^)(float))progress
  241. successBlock:(void (^)(void))success
  242. failBlock:(void (^)(NSString *))failure;
  243. /**
  244. 发送商品信息消息:
  245. 调用此接口、可以发送商品信息消息
  246. param message: 消息字典
  247. param successBlock: 成功回调
  248. param failBlock: 失败回调
  249. */
  250. + (void)sendMsgCardInfo:(NSDictionary *)message
  251. successBlock:(void (^)(void))success
  252. failBlock:(void (^)(NSString *))failure;
  253. /**
  254. 下载消息中的文件:
  255. param message: 消息实例
  256. param localFilePath: 沙盒文件相对路径
  257. param progress: 下载进度回调
  258. param successBlock: 成功回调
  259. param failBlock: 失败回调
  260. */
  261. + (void)downloadFileWithMessage:(CustomMessage *)message
  262. localFilePath:(NSString *)filePath
  263. progressHander:(void (^)(float))progress
  264. successBlock:(void (^)(void))success
  265. failBlock:(void (^)(NSString *))failure;
  266. /**
  267. 消息重发:
  268. 调用此接口、将未发送的消息重新发送
  269. @param message 消息内容
  270. @param success 成功回调
  271. @param failure 失败回调
  272. */
  273. + (void)resendMessage:(CustomMessage *)message
  274. successBlock:(void (^)(void))success
  275. failBlock:(void (^)(NSString *))failure;
  276. /**
  277. 封装消息模型:
  278. 目前只支持新增的评价类型消息(不支持文本、语音、图片等)
  279. */
  280. + (CustomMessage *)createMessageOfInvestigations;
  281. /**
  282. 获取数据库信息:
  283. 调用此接口、获取数据库信息
  284. param num : 单次获取消息数目(无默认值)
  285. param [CustomMessage]: 返回消息数组
  286. */
  287. + (NSArray<CustomMessage *> *)getDataFromDatabase:(int)number;
  288. /**
  289. 获取数据库接口、相同的accessId的数据库中的全部消息
  290. 调用此接口、获取数据库下同一个accessid下的全部信息
  291. param num : 单次获取消息数目(无默认值)
  292. param [CustomMessage]: 返回消息数组
  293. */
  294. + (NSArray<CustomMessage *> *)getAccessidAllDataFormDatabase:(int)number;
  295. /**
  296. 获取数据库接口、相同的userId的数据库中的全部消息
  297. 调用此接口、获取数据库下同一个userId下的全部信息
  298. param num : 单次获取消息数目(无默认值)
  299. param [CustomMessage]: 返回消息数组
  300. */
  301. + (NSArray<CustomMessage *> *)getUserIdDataFormDatabase:(int)number;
  302. /**
  303. 获取单条数据库信息:
  304. 调用此接口、获取数据库一条记录、用于消息重发
  305. param messageId: 消息ID
  306. param [CustomMessage]: 返回消息数组
  307. */
  308. + (NSArray<CustomMessage *> *)getOneDataFromDatabase:(NSString *)messageId;
  309. /**
  310. 删除单条数据库信息:
  311. 用此接口、删除数据路一条记录、只能删除本地消息
  312. param message: 消息
  313. */
  314. + (void)removeDataFromDataBase:(NSString *)messageId;
  315. /**
  316. 修改语音状态接口:
  317. 将语音由未读取状态变为已读取状态
  318. param messageId: 消息ID
  319. */
  320. + (void)changeAudioMessageStatus:(NSString *)messageId;
  321. /**
  322. 撤回消息接口:
  323. 将发送的消息撤回,该接口只用于客服撤回消息
  324. param messageId: 消息ID
  325. */
  326. + (void)changeDrawMessageStatus:(NSString *)messageId;
  327. /**
  328. 查询Mp3消息:
  329. 查询MP3类型文件的消息的大小
  330. param messageId: 消息ID
  331. */
  332. + (NSString *)queryMp3FileMessageSize:(NSString *)messageId;
  333. /**
  334. 修改Mp3消息:
  335. 修改MP3类型文件的消息的大小
  336. param messageId: 消息ID
  337. param fileSize: 文件大小
  338. */
  339. + (void)changeMp3FileMessageSize:(NSString *)messageId
  340. fileSize:(NSString *)fileSize;
  341. /**
  342. 插入商品信息展示数据
  343. param message: 消息字典
  344. */
  345. + (void)insertCardInfoData:(NSDictionary *)message type:(NSString *)type;
  346. /**!
  347. 提示: Use the (insertCardInfoData: type:) instead
  348. */
  349. + (void)insertCardInfoData:(NSDictionary *)message __attribute__((deprecated));
  350. /*
  351. 删除商品信息展示消息
  352. */
  353. + (void)deleteCardTypeMessage;
  354. + (void)deleteCardTypeMessage:(NSString *)type;
  355. /**
  356. 变更商品信息展示消息时间
  357. param time: 消息时间
  358. */
  359. + (void)changeCardTypeMessageTime:(NSString *)time;
  360. /**
  361. 语音转文本是否显示
  362. param status: 是否显示 @”0“不显示 @”1“显示
  363. param messageId: 消息id (messageId传@”all“时是隐藏所有已经转的语音----用于退出聊天页面再次进入的时候)
  364. */
  365. + (void)changeVoiceTextShowoOrNot:(NSString *)status message:(NSString *)messageId;
  366. /**
  367. 查询语音转文字的状态
  368. 0不展示 1展示 2正在翻译中…
  369. @param messageId 消息id
  370. */
  371. + (NSString *)queryVoiceTextStatusWithmessageId:(NSString *)messageId;
  372. /**
  373. 插入自定义类型消息 --- 目前只支持插入未定义的消息类型,已定义的消息类型不支持回显
  374. 该方法只插入本地消息,只用于自定义消息回显,不会发送给后端和坐席
  375. */
  376. + (void)insertOtherInfoData:(NSDictionary *)mateData type:(NSString *)type;
  377. /**
  378. 插入留言内容,用于会话页面展示
  379. */
  380. + (void)insertLeaveMsg:(NSString *)message;
  381. /**
  382. 请求人工服务:
  383. 调用此接口、请求人工服务(如后台开启智能机器人功能、默认为机器人服务器)
  384. param successBlock: 成功回调
  385. param failBlock: 失败回调
  386. */
  387. + (void)sdkConvertManual:(NSString *)converType
  388. successBlock:(void (^)(void))success
  389. failBlock:(void (^)(NSString *))failure;
  390. /**
  391. 请求人工服务:带技能组id
  392. 用于机器人问答自动调用转人工服务
  393. param peerId: 技能组id
  394. param successBlock: 成功回调
  395. param failBlock: 失败回调
  396. */
  397. + (void)sdkConvertManualWithPeerId:(NSString *)peerId
  398. convertType:(NSString *)convertType
  399. successBlock:(void (^)(void))success
  400. failBlock:(void (^)(NSString *))failure;
  401. /**
  402. 其他坐席服务授权
  403. 专属坐席未在线的情况下,是否接受其他坐席的服务
  404. param peer: 技能组ID, 详见beginSession接口
  405. param successBlock: 成功回调
  406. param failBlock: 失败回调
  407. */
  408. + (void)sdkAcceptOtherAgentWithPeer:(NSString *)peer
  409. successBlock:(void (^)(void))success
  410. failBlock:(void (^)(NSString *))failure;
  411. /**
  412. 获取满意度评价信息:
  413. 用于满意度调查
  414. param investigateArray: 评价信息
  415. param successBlock: 成功回调
  416. param failureBlock : 失败回调
  417. */
  418. + (void)sdkGetInvestigate:(void (^)(NSArray<NSDictionary *> *))success
  419. failureBlock:(void (^)(NSString *))failure;
  420. /**
  421. 获取满意度评价信息:
  422. 用于满意度调查 自定义标题和感谢语
  423. param investigateArray: 评价信息
  424. param successBlock: 成功回调
  425. param failureBlock : 失败回调
  426. */
  427. + (void)newSDKGetInvestigate:(void (^)(QMEvaluation *))success
  428. failureBlock:(void (^)(NSString *))failure;
  429. /**
  430. 取消满意度评价:
  431. 获取服务器timestamp时间戳
  432. param successBlock: 成功回调
  433. param failureBlock : 失败回调
  434. */
  435. + (void)sdkGetServerTime:(void (^)(NSString *))success
  436. failureBlock:(void (^)(void))failure;
  437. /**
  438. 查询满意度评价是否超时:
  439. params 参数
  440. param successBlock: 成功回调
  441. param failureBlock : 失败回调
  442. */
  443. + (void)sdkCheckImCsrTimeoutParams:(NSDictionary *)params
  444. success:(void (^)(void))success
  445. failureBlock:(void (^)(void))failure;
  446. /**
  447. 获取技能组信息:
  448. 开始会话前选择技能组进入
  449. param investigateArray: 评价信息
  450. param successBlock: 成功回调
  451. param failureBlock: 失败回调
  452. */
  453. + (void)sdkGetPeers:(void (^)(NSArray<NSDictionary *> *))success
  454. failureBlock:(void (^)(NSString *))failure;
  455. /**
  456. 获取未读消息数接口
  457. param accessId: 接入客服系统的密钥, 可在客服系统登录平台获取
  458. param userName: 用户名, 区分用户, 用户名可直接在后台显示
  459. param userId: 用户ID, 区分用户
  460. param successBlock: 成功回调
  461. param failureBlock : 失败回调
  462. */
  463. + (void)sdkGetUnReadMessage:(NSString *)accessId
  464. userName:(NSString *)userName
  465. userId:(NSString *)userId
  466. successBlock:(void (^)(NSInteger))success
  467. failBlock:(void (^)(NSString *))failure;
  468. /**
  469. 提交满意度调查信息
  470. param name: 评价信息
  471. param value: 评价信息ID
  472. param successBlock: 成功回调
  473. param failBlock: 失败回调
  474. */
  475. + (void)sdkSubmitInvestigate:(NSString *)name
  476. value:(NSString *)value
  477. successBlock:(void (^)(void))success
  478. failBlock:(void (^)(NSString *))failure;
  479. /**
  480. 提交满意度评价 包含二级n标题和备注
  481. param name: 评价信息
  482. param value: 评价信息ID
  483. param successBlock: 成功回调
  484. param failBlock: 失败回调
  485. */
  486. + (void)sdkNewSubmitInvestigate:(NSString *)name
  487. value:(NSString *)value
  488. radioValue:(NSArray *)radioValue
  489. remark:(NSString *)remark
  490. way:(NSString *)way
  491. operation:(NSString *)operation
  492. sessionId:(NSString *)sessionId
  493. successBlock:(void (^)(void))success
  494. failBlock:(void (^)(NSString *))failure;
  495. /**
  496. 留言接口
  497. 客服离线状态下,未配置机器人客服或转人工客服时,可进行留言操作
  498. param peer: 技能组
  499. param phone: 联系电话
  500. param Email: 联系邮箱
  501. param message: 留言内容
  502. param successBlock: 成功回调
  503. param failBlock: 失败回调
  504. */
  505. + (void)sdkSubmitLeaveMessage:(NSString *)peer
  506. phone:(NSString *)phone
  507. Email:(NSString *)email
  508. message:(NSString *)message
  509. successBlock:(void (^)(void))success
  510. failBlock:(void (^)(NSString *))failure;
  511. /**
  512. 留言接口
  513. 客服离线状态下,未配置机器人客服或转人工客服时,可进行留言操作
  514. param peer: 技能组
  515. param information: 联系信息
  516. param leavesgFields: 自定义联系字段
  517. param message: 留言内容
  518. param successBlock: 成功回调
  519. param failBlock: 失败回调
  520. */
  521. + (void)sdkSubmitLeaveMessageWithInformation:(NSString *)peer
  522. information:(NSDictionary *)information
  523. leavemsgFields:(NSArray<NSDictionary*> *)leavemsgFields
  524. message:(NSString *)message
  525. successBlock:(void (^)(void))success
  526. failBlock:(void (^)(NSString *))failure;
  527. /**
  528. 机器人反馈
  529. param isUseful: 是否有帮助
  530. param questionId: 问题ID
  531. param messageId: 消息Id
  532. param robotType: 机器人类型
  533. parma robotId: 机器人ID
  534. param successBlock: 成功回调
  535. param failBlock: 失败回调
  536. */
  537. + (void)sdkSubmitRobotFeedback:(BOOL)isUseful
  538. questionId:(NSString *)questionId
  539. messageId:(NSString *)messageId
  540. robotType:(NSString *)robotType
  541. robotId:(NSString *)robotId
  542. robotMsgId:(NSString *)robotMsgId
  543. successBlock:(void (^)(void))success
  544. failBlock:(void (^)(NSString *))failure;
  545. /**
  546. 智能机器人评价
  547. param robotId: 机器人id
  548. param satisfaction: 评价选项
  549. param successBlock: 成功回调
  550. param failBlock: 失败回调
  551. */
  552. + (void)sdkSubmitIntelligentRobotSatisfaction:(NSString *)satisfaction
  553. satisfaction:(NSString *)satisfaction
  554. successBlock:(void (^)(void))success
  555. failBlock:(void (^)(NSString *))failure;
  556. /**
  557. xbot机器人反馈
  558. param isUseful: 是否有帮助
  559. param messageId: 消息Id
  560. parma robotId: 机器人ID
  561. param oriquestion: 访客问题
  562. param question: 标准问题
  563. param answer: 答案
  564. param confidence: 置信度
  565. param successBlock: 成功回调
  566. param failBlock: 失败回调
  567. */
  568. + (void)sdkSubmitXbotRobotFeedback:(BOOL)isUseful
  569. message:(CustomMessage *)message
  570. successBlock:(void (^)(void))success
  571. failBlock:(void (^)(NSString *))failure;
  572. /**
  573. xbot机器人评价
  574. param satisfaction: 评价选项
  575. param successBlock: 成功回调
  576. param failBlock: 失败回调
  577. */
  578. + (void)sdkSubmitXbotRobotSatisfaction:(NSString *)satisfaction
  579. successBlock:(void (^)(void))success
  580. failBlock:(void (^)(NSString *))failure;
  581. /**
  582. xbot联想功能
  583. param text 联想文本
  584. param cateIds xbot机器人cateIds
  585. param robotId 机器人id
  586. param robotType 机器人类型
  587. param successBlock: 成功回调
  588. param failBlock: 失败回调
  589. */
  590. + (void)sdkSubmitXbotRobotAssociationInput:(NSString *)text
  591. cateIds:(NSArray *)cateIds
  592. robotId:(NSString *)robotId
  593. robotType:(NSString *)robotType
  594. successBlock:(void (^)(NSArray *))success
  595. failBlock:(void (^)(NSString *))failure;
  596. /**
  597. 客服是否说话
  598. 目前用于满意度评价按钮
  599. param successBlock: 成功回调
  600. param failBlock: 失败回调
  601. */
  602. + (void)customerServiceIsSpeek:(void (^)(void))success
  603. failBlock:(void (^)(NSString *))failure;
  604. /**
  605. 是否启用留言功能
  606. 全局配置:
  607. 启用留言功能,坐席不在线跳转到留言面板进行留言
  608. 未启用留言功能,坐席不在线,不会跳转至留言面板
  609. */
  610. + (BOOL)allowedLeaveMessage;
  611. /**
  612. 留言提示窗口信息
  613. 全局配置:
  614. 未启用留言状态下,弹出的提示内容
  615. */
  616. + (NSString *)leaveMessageAlert;
  617. /**
  618. 留言标题
  619. 全局配置:
  620. 启用留言状态下,展示留言板标题
  621. */
  622. + (NSString *)leaveMessageTitle;
  623. /**
  624. 留言内容占位
  625. 全局配置:
  626. 启用留言状态下,展示在留言板输入框的占位提醒
  627. */
  628. + (NSString *)leaveMessagePlaceholder;
  629. /**
  630. 留言自定义配置
  631. 全局配置:
  632. 后台留言板联系方式自定义字段
  633. */
  634. + (NSArray *)leaveMessageContactInformation;
  635. /**
  636. 创建访客无响应定时器
  637. 用户给坐席发送消息,创建定时器
  638. */
  639. + (void)createNoresponseTimer;
  640. /**
  641. 移除访客无响应定时器
  642. 用户长时间未给坐席发送消息,自动移除当前定时器
  643. */
  644. + (void)removeNoresponseTimer;
  645. /**
  646. 自动关闭会话提示语
  647. 全局配置:
  648. 后台配置的提示语,在断开前进行提示
  649. */
  650. + (NSString *)breakSessionAlert;
  651. /**
  652. 自动关闭会话时间
  653. 全局配置:
  654. 从开始新的会话、或用户发送一条消息开始计时
  655. */
  656. + (int)breakSessionDuration;
  657. /**
  658. 自动关闭会话提示时间
  659. 全局配置:
  660. 关闭会话前进行的提示的时间,从开始新的会话、或用户发送一条消息开始计时
  661. */
  662. + (int)breakSessionAlertDuration;
  663. /**
  664. 判断是否启用机器人
  665. */
  666. + (BOOL)allowRobot;
  667. /**
  668. 机器人的类型
  669. 此方法必须是在启用机器人后使用
  670. 小七 7mbot
  671. 小陌 7mbot_ai
  672. xbot xbot
  673. 云秘 yunmi
  674. 智齿 sobot
  675. */
  676. + (NSString *)sdkRobotType;
  677. /**
  678. 转人工按钮是否显示
  679. */
  680. + (BOOL)manualButtonStatus;
  681. /**
  682. 排队数提示文案
  683. */
  684. + (NSArray *)sdkQueueMessage;
  685. /**
  686. 是否开启访客先说话才接入
  687. */
  688. + (BOOL)customerAccessAfterMessage;
  689. /**
  690. xbot底部推荐数据
  691. */
  692. + (NSArray *)xbotBottomList:(NSString *)type;
  693. /*
  694. 应用杀死时事件处理
  695. **/
  696. + (void)applicationWillTerminateHandle;
  697. /**
  698. 获取常见问题
  699. */
  700. + (void)sdkGetCommonQuestion:(void (^)(NSArray *))completion failure:(void(^)(NSString *))failure;
  701. /**
  702. 获取常见问题第二联
  703. */
  704. + (void)sdkGetSubCommonQuestionWithcid:(NSString *)cid completion:(void (^)(NSArray *))completion failure:(void(^)(NSString *))failure;
  705. + (void)sdkGetCommonDataWithParams:(NSDictionary *)params completion:(void (^)(id))completion failure:(void (^)(NSError *))failure;
  706. + (void)changeAllCardMessageHidden;
  707. + (void)changeCardMessageType:(QMMessageCardReadType)type messageId:(NSString *)messageId;
  708. /**
  709. 退出登录,取消推送
  710. */
  711. + (void)sdkLogoutAction:(void(^)(BOOL, NSString *))completion;
  712. + (CustomMessage *)createAndInsertMessageToDBWithMessageType: (NSString *)type filePath: (NSString *)filePath content: (NSString *)content metaData: (NSDictionary *)metaData;
  713. /**
  714. 定时断开会话消息提醒
  715. */
  716. + (void)sdkSendBreakTipMessage;
  717. /**
  718. 系统消息头像
  719. */
  720. + (NSString *)sdkSystemMessageIcon;
  721. /**
  722. 消费未读消息
  723. */
  724. + (void)sdkDealImMsgWithMessageID:(NSArray *)messageID;
  725. /**
  726. 自定义对方撤回消息的文案
  727. 默认文案:对方撤回一条消息
  728. 可用于国际化适配和自定义文案
  729. */
  730. + (void)WithdrawMessageText:(NSString *)text;
  731. /**
  732. 是否开启已读未读
  733. */
  734. + (BOOL)sdkWhetherToOpenReadAndUnread;
  735. /**
  736. 查询坐席的未消费的消息
  737. */
  738. + (NSArray *) sdkGetAgentMessageWithIsRead;
  739. /**
  740. 满意度评价消息 只写入本地数据库
  741. param text: 标题&评价内容
  742. param ID: 满意度id 即会话id
  743. param status: 满意度状态 0--未评价 1--已评价 2--评价内容
  744. */
  745. //+ (void)sdkSendEvaluateMessage:(NSString *)text
  746. // withID:(NSString *)ID
  747. // withStatus:(NSString *)status
  748. // withTimestamp:(NSString *)timestamp;
  749. + (void)sdkSendEvaluateMessage:(NSDictionary *)dic;
  750. /**
  751. 通过evaluateId更改满意度评价状态
  752. */
  753. + (void)sdkUpdateEvaluateStatusWithEvaluateId:(NSString *)evaluateId;
  754. /**
  755. 定时关闭会话时间到期后调用该接口
  756. */
  757. + (void)sdkClientChatClose:(NSString *)chatID;
  758. /*
  759. 修改常见问题index
  760. **/
  761. + (void)sdkChangeCommonProblemIndex:(NSString *)index withMessageID:(NSString *)messageId;
  762. /*
  763. 修改robotFlowList
  764. **/
  765. + (void)sdkUpdateRobotFlowList:(NSString *)flowList withMessageID:(NSString *)messageId;
  766. /*
  767. 修改robotFlowSend
  768. **/
  769. + (void)sdkUpdateRobotFlowSend:(NSString *)flowSend withMessageID:(NSString *)messageId;
  770. /*
  771. 用于机器人表单消息上传附件
  772. fileDic 附件消息体 必须包含fileName、fileSize、filePath
  773. progress 上传进度
  774. success 上传成功返回链接
  775. failBlock 上传失败
  776. **/
  777. + (void)sdkSendFile:(NSDictionary *)fileDic progress:(void (^)(float))progress success:(void (^)(NSString *))success failBlock:(void (^)(NSString *))failure;
  778. /*
  779. 提交表单消息
  780. **/
  781. + (void)sdkSubmitFormMessage:(NSDictionary *)dic;
  782. /*
  783. 更改表单消息
  784. 0 消息第一次插入数据库 用于弹出消息
  785. 1 已存在 不需要弹出
  786. 2 已提交 不能点击弹出
  787. **/
  788. + (void)sdkUpdateFormStatus:(NSString *)status withMessageID:(NSString *)messageId;
  789. /*
  790. 获取 SDK 版本号
  791. **/
  792. + (NSString *)QMSDKVersion;
  793. /*
  794. 用户输入监听
  795. **/
  796. + (void)sdkInputMonitor:(NSString *)content successBlock:(void (^)(void))success failBlock:(void (^)(void))failure;
  797. /**
  798. 是否进行输入监听
  799. */
  800. + (BOOL)sdkGetIsInputMonitor;
  801. #pragma mark - 视频接口
  802. /**
  803. 是否开启视频权限 yes为开启
  804. */
  805. + (BOOL)sdkVideoRights;
  806. /**
  807. 接受视频
  808. */
  809. + (void)sdkAcceptVideo:(void (^)(void))success failBlock:(void (^)(void))failure;
  810. /**
  811. 拒绝视频
  812. */
  813. + (void)sdkRefuseVideo:(void (^)(void))success failBlock:(void (^)(void))failure;
  814. /**
  815. 取消视频
  816. */
  817. + (void)sdkCannelVideo:(void (^)(void))success failBlock:(void (^)(void))failure;
  818. /**挂断*/
  819. + (void)sdkHangupVideo:(NSString *)originator successBlock:(void (^)(void))success failBlock:(void (^)(void))failure;
  820. + (void)sdkGetVideo:(NSString *)type Completion:(void (^)(id))completion failure:(void (^)(NSError *))failure;
  821. /**
  822. 消息文件下载
  823. */
  824. + (void)downloadFileWithUrl:(NSString *)url
  825. successBlock:(void (^)(void))success
  826. failBlock:(void (^)(NSString *))failure;
  827. /**
  828. 排队保持时间
  829. */
  830. + (NSString *)queueKeepTime;
  831. /**
  832. 排队保持状态
  833. */
  834. + (BOOL)queueKeepStatus;
  835. /**
  836. 上传类型
  837. */
  838. + (BOOL)allowedTXUpload;
  839. + (NSString *)getBaseUrl;
  840. + (NSString *)getAccessid;
  841. + (void)setTestURL:(NSString *)url;
  842. @end