为所有意图启用 webhook

Enable webhook for all intents

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

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

目前还没有这样的功能,但我遇到了类似的问题,我是这样解决的:

  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 代理。

希望对您有所帮助。

@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)