2017-03-03 3 views
3

私はX分ごとに実行されるAzure関数(Timer Trigger Function)を使用しています。私はBotFrameworkを使ってボットを作ったので、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:Mis 「メッセージ」という名前のバインディング引数を歌います。バインディング引数の名前が一致しないと、関数のインデックスエラーが発生する可能性があります。

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

出力バインディングはうまく動作しますが、追加されたときにはボットフレームワークとして入力バインドエラーを受け取りました:\ "messsage \":\ " 。 - >プロパティ 'BotAttribute.SecretSetting'の値を解決できません。\ " – curiousMonkey

関連する問題