前提条件
了解机器人相关术语及相关配置,并已完成以下步骤:添加机器人、设置基础信息、配置知识库,详情请参见 快速入门。
集成 IM SDK ,并跑通登录、发单聊消息等功能。请参见 iOS(含 UI)。
UI 插件介绍
环境与版本
本插件依赖插件以及环境
Xcode 10 及以上
iOS 9.0 及以上
插件集成
通过 CocoaPods 可将机器人插件引入到项目中:
# 集成机器人插件,从 7.7 版本开始支持pod 'TUIChatBotPlugin'# 机器人插件依赖 TUIChat 和 TUIContact 两个组件,这两个组件也需同时集成,机器人插件版本需要和组件版本保持一致pod 'TUIChat'pod 'TUIContact'
步骤1:创建机器人
步骤2:配置机器人
机器人对应的 IM 用户为一类特殊的 IM 用户,在进入此类用户的聊天页面时会有特殊的发送消息操作,因此我们建议将机器人的用户 ID 列表当作配置保存起来,方便全局调用,具体实现可参见
TUIChatBotPlugin
示例代码:// 1. 设置机器人列表@implementation TUIChatBotPluginPrivateConfig- (NSArray *)chatBotAccounts {return @[gChatBot];}@end// 2. 监听 TUIContact 组件的 TUICore_TUIContactExtension_ContactMenu_ClassicExtensionID 扩展事件添加机器人到联系人列表中@implementation TUICustomerServicePluginExtensionObserver+ (void)load {[TUICore registerExtension:TUICore_TUIContactExtension_ContactMenu_ClassicExtensionID object:TUICustomerServicePluginExtensionObserver.shareInstance];}- (NSArray<TUIExtensionInfo *> *)onGetExtension:(NSString *)extensionID param:(NSDictionary *)param {if (![extensionID isKindOfClass:NSString.class]) {return nil;}if ([extensionID isEqualToString:TUICore_TUIContactExtension_ContactMenu_ClassicExtensionID]) {TUIExtensionInfo *chatBotService = [[TUIExtensionInfo alloc] init];chatBotService.weight = 40;chatBotService.text = TIMCommonLocalizableString(TUIChatBotAccounts);chatBotService.icon = TUIChatBotPluginBundleThemeImage(@"chat_bot_contact_menu_icon_img", @"chat_bot");chatBotService.onClicked = ^(NSDictionary *_Nonnull param) {// 机器人被点击后事件处理};return @[chatBotService];}}
步骤3:进入机器人会话,触发欢迎语和欢迎卡片
进入机器人会话后,
TUIChatBotPlugin
插件会自动发送一条自定义信令触发后台下发欢迎语或欢迎卡片,示例代码如下:// 1. 注册会话加载的事件通知@implementation TUIChatBotPluginService- (void)registerEvent {[TUICore registerEvent:TUICore_TUIChatNotifysubKey:TUICore_TUIChatNotify_ChatVC_ViewDidLoadSubKeyobject:self];}// 2. 收到会话加载事件通知后,发送一条自定义信令触发后台下发欢迎语或欢迎卡片- (void)onNotifyEvent:(NSString *)key subKey:(NSString *)subKey object:(nullable id)anObject param:(nullable NSDictionary *)param {if ([key isEqualToString:TUICore_TUIChatNotify] &&[subKey isEqualToString:TUICore_TUIChatNotify_ChatVC_ViewDidLoadSubKey]) {if (param == nil) {NSLog(@"TUIChat notify param is invalid");return;}NSString *userID = [param objectForKey:TUICore_TUIChatNotify_ChatVC_ViewDidLoadSubKey_UserID];if (![TUIChatBotPluginPrivateConfig.sharedInstance isChatBotAccount:userID]) {return;}NSData *data = [TUITool dictionary2JsonData:@{BussinessID_ChatBot : @(1), @"src": BussinessID_Src_ChatBot_Request}];[TUIChatBotPluginDataProvider sendCustomMessageWithoutUpdateUI:data];}}
步骤4:展示欢迎卡片消息
TUIChatBotPlugin
插件收到后台下发的欢迎卡片后,会自动解析并展示欢迎卡片,示例代码可参见 TUIChatBotPluginBranchCell.m
和 TUIChatBotPluginBranchCellData.m
类。
步骤5:展示引导提问消息
当机器人不理解用户意图,后台会下发引导提问消息,提供几个问题选项供用户选择。用户端点击某个想问的问题,需要发送对应问题的文本消息给机器人,示例代码请参见
TUIChatBotPluginBranchCell.m
和 TUIChatBotPluginBranchCellData.m
类。
步骤6:展示流式文本消息
如果您在控制台配置机器人回复消息效果为流式输出,终端收到机器人的消息就会以流式效果展示,示例代码请参见
TUIChatBotPluginStreamTextCell.m
和 TUIChatBotPluginStreamTextCellData.m
类。