2017-03-03 42 views
3

我正在使用每X分鐘執行一次的Azure函數(計時器觸發函數)。我使用BotFramework製作了一個bot,並且我希望每x分鐘觸發一次天藍色的函數。當它被觸發時,我的機器人必須被通知。Azure函數不會通知我的機器人(Bot Framework)

我有,一個輸出博特框架:

enter image description here

這裏是我的JSON文件:

{ 
    "bindings": [ 
    { 
     "name": "myTimer", 
     "type": "timerTrigger", 
     "direction": "in", 
     "schedule": "0 */1 * * * *" 
    }, 
    { 
     "type": "bot", 
     "name": "message", 
     "botId": "Azurefunction", 
     "secret": "h3VkHcc_PXU.cwA.XXXXXX.XXXXXXXX-XXX", 
     "direction": "out" 
    } 
    ], 
    "disabled": false 
} 

我的功能是:

using System; 
using System.Net; 
using System.Net.Http; 
using Microsoft.Azure.WebJobs.Host; 

public class BotMessage 
{ 
    public string Source { get; set; } 
    public string Message { get; set; } 
} 


public static BotMessage Run(TimerInfo myTimer ,TraceWriter log) 
{ 
    BotMessage message = new BotMessage() 
    { 
     Source = "AzureFunction", 
     Message = "Testing" 
    }; 
    return message; 
} 

我仍然有一個警告我不知道爲什麼(也許這是問題)......警告AF004:錯唱出名爲'message'的綁定參數。不匹配的綁定參數名稱可能會導致函數索引錯誤。

有了這個東西,Azure功能運行良好,但似乎我的機器人沒有通知。我忘了什麼嗎?

2017-03-03T13:05:00.001 Function started (Id=a5be778e-da6d-4957-a7b5-d9c8f58bd396) 
2017-03-03T13:05:00.001 Function completed (Success, Id=a5be778e-da6d-4957-a7b5-d9c8f58bd396) 

謝謝您的閱讀。

回答

3

您需要將您的機器人輸出綁定名稱從"message"更改爲"$return",因爲您已將函數編碼爲函數返回值而不是輸出參數。這就是警告試圖告訴你的。

一旦你解決了這個問題,我也相信"secret"值應該是一個應用程序設置名稱,其值是你的機器人祕密。你不應該把祕密直接放在你的function.json文件中。

+0

完美的作品!萬分感謝。 – Shiglet

+0

btw:不要在輸出菜單中添加鍵(請參閱上面的圖片),因爲它會自動將它添加到您的function.json中。正如@mathewc所說,通過創建一個新條目「AzureWebJobsBotFrameworkDirectLineSecret」來添加它在您的應用程序設置中。 – Shiglet

+0

適合輸出綁定,但添加輸入綁定爲Bot框架時收到錯誤'\「messsage \」:\「執行函數時的異常:函數。 - >無法解析屬性'BotAttribute.SecretSetting'。\「'的值 – curiousMonkey

相關問題