为所有意图启用webhook

时间:2018-07-09 08:35:14

标签: webhooks chatbot dialogflow

我想知道是否有任何方法可以激活所有意图的webhook(而不是一个一个地激活它)。谢谢!

3 个答案:

答案 0 :(得分:2)

目前尚无此类功能,但是我遇到了类似的问题,这就是我解决的方法:

  1. 下载所有意图的zip文件
  2. 编写一个程序(我用python编写)以遍历所有文件(忽略以usersays结尾的文件
  3. "webhookUsed": false,更改为"webhookUsed": true,
  4. 使用Restore from zip选项上载替换现有意图的zip文件

更新1:
下面是代码:

import zipfile
import json
import os
import glob

cwd = os.getcwd()

zip_ref = zipfile.ZipFile(cwd + '/filename.zip', 'r')
zip_ref.extractall('zipped')
zip_ref.close()

cwd = cwd + '/zipped/intents'

files = glob.glob(cwd + "/*.json")

for file in files:
    print(file)
    if "usersay" not in file:
        json_data= json.loads(open(file).read())
        json_data['webhookUsed'] = True
        with open(file, 'w') as outfile:
            json.dump(json_data, outfile)

将从dialogflow获得的zip文件放置在与放置上述代码并运行python程序相同的目录中。
运行此代码后,导航到名为zipped的目录并压缩文件的所有内容,然后执行步骤4。

更新2:
更新了代码,使其与多种语言Dialogflow代理兼容。

希望有帮助。

答案 1 :(得分:1)

除了一个接一个地激活它,或者下载zip文件,然后在JSON中按音调设置一个,然后上传结果-否。

答案 2 :(得分:0)

@ sid8491非常感谢,这对我有用!

我必须进行一些更改才能正常运行。您的回答非常有帮助。这是我的最终脚本:

import zipfile
import json
import os
import glob

cwd = os.getcwd()


zip_ref = zipfile.ZipFile(cwd + '/Bill.zip', 'r')
zip_ref.extractall('zipped')
zip_ref.close()

cwd = cwd + '/zipped/intents'

files = glob.glob(cwd + "/*.json")

for file in files:
    print(file)
    if "usersay" not in file: 
        json_data = json.loads(open(file, encoding="utf8").read())
        json_data['webhookUsed'] = True
        with open(file, 'w') as outfile:
            json.dump(json_data, outfile)
    else:
        print("Usersay file", file)