有奖捉虫:行业应用 & 管理与支持文档专题 HOT

前提条件

了解机器人相关术语及相关配置,并已完成以下步骤:添加机器人、设置基础信息、配置知识库,详情请参见 快速入门
集成 IM SDK ,并跑通登录、发单聊消息等功能。请参见 iOS(含 UI)

UI 插件介绍

您可以集成腾讯云即时通信官方提供的机器人插件 TUIChatBotPlugin,集成后,您可以在 IM 应用中集成机器人功能。机器人功能包括解析展示欢迎卡片消息、引导提问消息、流式文本消息等。

环境与版本

本插件依赖插件以及环境
Xcode 10 及以上
iOS 9.0 及以上

插件集成

通过 CocoaPods 可将机器人插件引入到项目中:
# 集成机器人插件,从 7.7 版本开始支持
pod 'TUIChatBotPlugin'
# 机器人插件依赖 TUIChat 和 TUIContact 两个组件,这两个组件也需同时集成,机器人插件版本需要和组件版本保持一致
pod 'TUIChat'
pod 'TUIContact'

步骤1:创建机器人

参见 操作指南 ,在 IM 控制上创建一个聊天机器人,并配置好问答库、闲聊库以及欢迎卡片。

步骤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_TUIChatNotify
subKey:TUICore_TUIChatNotify_ChatVC_ViewDidLoadSubKey
object: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.mTUIChatBotPluginBranchCellData.m类。




步骤5:展示引导提问消息

当机器人不理解用户意图,后台会下发引导提问消息,提供几个问题选项供用户选择。用户端点击某个想问的问题,需要发送对应问题的文本消息给机器人,示例代码请参见 TUIChatBotPluginBranchCell.mTUIChatBotPluginBranchCellData.m类。




步骤6:展示流式文本消息

如果您在控制台配置机器人回复消息效果为流式输出,终端收到机器人的消息就会以流式效果展示,示例代码请参见 TUIChatBotPluginStreamTextCell.mTUIChatBotPluginStreamTextCellData.m类。