Botframework 自动化microsoft bot测试
我正试图想出一种方法,用bot框架自动测试im制作的bot。我已经使用了模拟器,这是伟大的,但我想自动化的事情有点。从我的研究中,我发现botium似乎是一个很棒的工具,但当我翻阅文档时,我感到非常迷茫。我还听说过使用DirectLineAPI。尽管如此,我的理解力不足还是阻碍了我。有人知道是否有一种方法可以使用REST连接到机器人吗?例如,我的理想场景是使用csv文件为bot提供输入和预期输出。我想循环浏览该文件,将输入传递给bot,并检查响应是否与预期输出匹配。我正在考虑在powershell中这样做,因为我在那里有一些经验,但我不知道如何开始。任何指导都将不胜感激 有人知道是否有一种方法可以使用REST连接到机器人吗 您可以使用向bot发送/接收活动 我的理想方案是使用csv文件为bot提供输入和预期输出。我想循环浏览该文件,将输入传递给bot,并检查响应是否与预期输出匹配。我正在考虑在powershell中这样做,因为我在那里有一些经验,但我不知道如何开始 根据您的需求,我编写了以下脚本来实现它,您可以参考一下Botframework 自动化microsoft bot测试,botframework,Botframework,我正试图想出一种方法,用bot框架自动测试im制作的bot。我已经使用了模拟器,这是伟大的,但我想自动化的事情有点。从我的研究中,我发现botium似乎是一个很棒的工具,但当我翻阅文档时,我感到非常迷茫。我还听说过使用DirectLineAPI。尽管如此,我的理解力不足还是阻碍了我。有人知道是否有一种方法可以使用REST连接到机器人吗?例如,我的理想场景是使用csv文件为bot提供输入和预期输出。我想循环浏览该文件,将输入传递给bot,并检查响应是否与预期输出匹配。我正在考虑在powershel
$directline_secert = "your_directline_secret"
$conversation_Id = ""
$filepath = "d:\testmes.csv"
$botId = "You_bot_id"
function StartConversation([string]$directlinesecert){
$uri = "https://directline.botframework.com/v3/directline/conversations"
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer " + $directlineSecert)
$response = Invoke-RestMethod -Uri $uri -Method Post -Headers $headers
$global:conversation_Id = $response.conversationId
Write-Host ("Conversation Id: " + $response.conversationId)
}
function SendActivity([string]$directlineSecert, [string]$conversationId, [string]$mes){
$uri = "https://directline.botframework.com/v3/directline/conversations/" + $conversationId + "/activities"
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer " + $directlineSecert)
$headers.Add("Content-Type", "application/json")
$Body = @{
"type" = "message"
"from" = @{"id" ="user1"}
"text" = $mes
} | ConvertTo-Json
$response = Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $Body -ContentType 'application/json'
Write-Host ("Id: " + $Response.id)
}
function ReceiveActivities([string]$directlineSecert, [string]$conversationId){
$uri = "https://directline.botframework.com/v3/directline/conversations/" + $conversationId + "/activities"
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer " + $directlineSecert)
$response = Invoke-RestMethod -Uri $uri -Method GET -Headers $headers
#Write-Host ("Activities number: " + $Response.activities.Count)
Foreach($activity in $Response.activities){
if($activity.type -eq "message" -and $activity.from.id -eq $botId){
#your code logic to compare received activities with expected result
Write-Host ("Activities Mes: " + $activity.text)
}
}
}
StartConversation -directlineSecert $directline_secert
#SendActivity -directlineSecert $directline_secert -conversationId '5e5JeKRtG5vBnGIhdip1Hv' -mes 'hi bot'
Import-CSV $filepath -Header Mes | Foreach-Object{
#Write-Host $_.Mes
SendActivity -directlineSecert $directline_secert -conversationId $conversation_Id -mes $_.Mes
}
ReceiveActivities -directlineSecert $directline_secert -conversationId $conversation_Id
测试结果:
要使用Botium测试Bot框架Bot,可以使用Directline连接器。您可以使用安装
npm install botium-connector-directline3
或者您可以下载Botium CLI,这样您就不需要安装任何其他软件包了
json文件应该如下所示-您可以在Azure帐户中找到Directline密钥
{
"botium": {
"Capabilities": {
"PROJECTNAME": "Directline3 Plugin Sample",
"CONTAINERMODE": "directline3",
"DIRECTLINE3_SECRET": "my-directline-secret",
"DIRECTLINE3_WEBSOCKET": true,
"DIRECTLINE3_POLLINGINTERVAL": 1000
}
}
}
剩下的是标准的Botium过程,即编写对话文件并在聊天机器人上运行它
botium-cli run --config path/to/botium.json --convos path/to/convo_files
非常感谢你!我正在努力建立我的直达电话,并将报告结果。我感谢你的帮助!谢天谢地,这似乎很有效。我想知道你是否能帮我做更多?我现在也在尝试对这些卡进行测试,你知道有没有办法接收卡返回的json进行验证?上面的答案很好,但别忘了测试你的Microsoft LUIS在训练数据方面的表现。有许多技术可以描述,Benoitbotmonkey.io是一个选项,但它们不支持某些高级有效负载