运行问答机器人引擎
运行问答机器人引擎
Answer Bot是一个强大的偏转机制,它使用机器学习来建议帮助中心的文章来响应用户的查询。统一SDK可以使用引擎自动转移客户查询。如果转移不成功,统一SDK可以切换到由其他产品引擎驱动的另一个联系人选项,例如支持引擎。
回答机器人引擎是如何工作的
回答机器人一次最多提供三篇文章来回应用户的查询。
文章屏幕打开几秒钟后,系统会询问用户该文章是否解决了他们的问题。
如果用户返回消息屏幕时没有将问题标记为已解决或未解决,则会在消息屏幕上再次提示相同的问题。
当用户表示他们的问题还没有解决时,答案机器人会提供其他可用的替代联系选项,比如支持。如果没有其他引擎已包括,回答机器人不提供任何其他联系选项。
通过支持引擎创建的任何票证,从回答机器人移交将包含回答机器人对话的完整记录。
启动Answer Bot引擎
注意:一定要添加统一SDK依赖,初始化SDK,识别您的用户。
首先,导入必要的依赖项:
斯威夫特
进口AnswerBotSDK
进口MessagingSDK
进口MessagingAPI
进口SDKConfigurations
objective - c
#进口<MessagingSDK/MessagingSDK。h>
#进口<AnswerBotSDK/AnswerBotSDK。h>
#进口<MessagingAPI/MessagingAPI。h>
#进口<SDKConfigurations/SDKConfigurations。h>
其次,获取an的实例AnswerBotEngine
引擎:
斯威夫特
{做
let answerbotenengine = try answerbotenengine .engine()
} catch {
//执行错误操作
}
objective - c
NSError*错误=零;
ZDKAnswerBotEngine*answerBotEngine=[ZDKAnswerBotEngine engineAndReturnError:&错误];
让引擎自己运转
要在消息传递屏幕上自行启动应答机器人引擎,请传递您的AnswerBotEngine
的实例。buildUI
方法消息传递
获取一个的实例ui
:
斯威夫特
{做
let messagingConfiguration = messagingConfiguration ()
让viewController = try message .instance。buildUI(引擎:[answerBotEngine],
配置:[messagingConfiguration])
self.navigationController ?。pushViewController(viewController, animated: true)
} catch {
//执行错误操作
}
objective - c
-(无效)startConversation{
NSError*错误=零;
NSArray*引擎=@[(id<ZDKEngine>)[ZDKAnswerBotEngine engineAndReturnError:&错误]];
ZDKMessagingConfiguration*messagingConfiguration=[ZDKMessagingConfiguration新];
ui*viewController=[[ZDKMessaging实例]buildUIWithEngines:引擎
配置:@[messagingConfiguration]
错误:&错误];
[自我。导航控制器pushViewController:viewController动画:是的];
}
引擎与其他引擎一起运行
将问答机器人引擎与支持和闲谈,聊天引擎,获取所需引擎的实例,并将它们与buildUI
方法:
斯威夫特
{做
let messagingConfiguration = messagingConfiguration ()
let answerbotenengine = try answerbotenengine .engine()
let supportEngine = try supportEngine .engine()
let chatEngine = try chatEngine .engine()
让viewController = try message .instance。buildUI(引擎:[answerBotEngine,chatEngine, supportEngine],
配置:[messagingConfiguration])
self.navigationController ?。pushViewController(viewController, animated: true)
} catch {
//执行错误操作
}
objective - c
-(无效)startConversation{
NSError*错误=零;
NSArray*引擎=@[
(id<ZDKEngine>)[ZDKAnswerBotEngine engineAndReturnError:&错误],
(id<ZDKEngine>)[ZDKSupportEngine engineAndReturnError:&错误],
(id<ZDKEngine>)[ZDKChatEngine engineAndReturnError:&错误],
];
ZDKMessagingConfiguration*messagingConfiguration=[ZDKMessagingConfiguration新];
ui*viewController=[[ZDKMessaging实例]buildUIWithEngines:引擎
配置:@[messagingConfiguration]
错误:&错误];
[自我。导航控制器pushViewController:viewController动画:是的];
}
请注意answerBotEngine
对象放置之前还有其他的引擎吗?这一点很重要,因为统一SDK将启动列表中的第一个引擎,任何后续引擎都将被视为潜在的联系选项。回答机器人可以移交给支持和聊天,但没有其他引擎可以移交给回答机器人。这意味着answerBotEngine
必须放在列表的首位,否则它将永远不会启动。
使用Answer Bot API提供程序
如果统一SDK UI不适合你的Answer Bot用例,你可以使用Answer Bot SDK的API提供程序来代替,并构建你自己的UI。
将提供程序作为依赖项添加
若要仅将提供程序添加为依赖项,请参见添加SDK。
使用AnswerBotProvider
的实例AnswerBotProvider
使用AnswerBot
单例模式:
斯威夫特
让answerBotProvider = AnswerBot.instance
objective - c
ZDKAnswerBotProvider*提供者=[[ZDKAnswerBot实例]提供者];
获取建议文章
要获取用户查询的建议文章,请调用getDeflectionForQuery
:
斯威夫特
answerBotProvider。getDeflectionForQuery(query: "query") {(result) in
切换结果{
case .success(let deflectionResponse):
let deflectionId = deflectionResponse.deflectionId
让interactionAccessToken = deflectionResponse.interactionAccessToken
//用冠词做点什么
案例.failure:
//处理错误
}
}
objective - c
[提供者getDeflectionForQueryWithQuery:@“查询”回调:^(ZDKDeflectionResponse*_Nullable响应,NSError*_Nullable错误){
NSNumber*deflectionId=[NSNumber numberWithUnsignedLong:响应。偏转。deflectionID];
NSString*interactionAccessToken=响应。interactionAccessToken;
NSArray<ZDKDeflectionArticle*>*文章=响应。deflectionArticles;
//用冠词做点什么
}];
一定要保持deflectionId
和interactionAccessToken
值,以便您可以解决或拒绝建议的条目。
解决建议
当建议文章解决了用户的问题时,将查询标记为已解决:
斯威夫特
answerBotProvider。resolveWithArticle (deflectionId: deflectionId,
正如:article.id,
interactionAccessToken: interactionAccessToken) {(result) in
切换结果{
案例.success:
//处理成功
案例.failure:
//处理错误
}
}
objective - c
[提供者resolveWithArticleWithDeflectionId:deflectionId
正如:文章。id
interactionAccessToken:interactionAccessToken
回调:^(id _空结果,NSError*_Nullable错误){
//处理输出
}];
拒绝建议
当最终用户指出建议的文章没有解决他们的查询时,拒绝该文章。拒绝电话也需要一个RejectionReason
参数:
斯威夫特
answerBotProvider。rejectWithArticle (deflectionId: delfactionId,
正如:article.id,
interactionAccessToken: interactionAccessToken,
原因:.notRelated){(结果)in
切换结果{
案例成功(让响应):
//成功地做某事
案例.failure:
//执行错误操作
}
}
objective - c
[提供者rejectWithArticleWithDeflectionId:deflectionid
正如:文章。id
interactionAccessToken:InteractionAccessToken
原因:ZDKRejectionReasonNotRelated
回调:^(id _空结果,NSError*_Nullable错误){
//处理输出
}];