当前位置: 首页 > 知识库问答 >
问题:

Twilio错误-90100:无效的自动驾驶操作JSON

殳勇
2023-03-14

我提到了Mwangi Kabiru发表的Twilio博客:

https://www.twilio.com/blog/serverless-whatsapp-chatbot-python-google-cloud-functions-twilio

可能的解决方案针对Actions模式测试您的JSON响应(https://carnelian-neanderthal-8008.twil.io/assets/actionsSchema.JSON)

如何下载在Google Cloud函数上创建的webhook的JSON文件,并根据Twilio Actions模式对其进行测试?有人能帮我解决这个问题吗?

谷歌云功能代码:

import gspread
from oauth2client.service_account import ServiceAccountCredentials
from datetime import datetime
import requests
from twilio.twiml.messaging_response import MessagingResponse


def whatsapp_webhook(request):
    '''
    HTTP Cloud Function.
    Parameters
    ----------
    request (flask.Request) : The request object.
        <https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
    Returns
    -------
        The response text, or any set of values that can be turned into a
        Response object using `make_response`
        <https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
    '''

    # google drive json dictionary
    data = {
    #json details generated by Google Cloud Platform
    }

        
    # use creds to create a client to interact with the Google Drive API
    scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
  
    creds = ServiceAccountCredentials.from_json_keyfile_dict(data, scope)
  
    client = gspread.authorize(creds)
  
    # Find a workbook by name and open the first sheet
    # Make sure you use the right name here.

    wb = client.open("Covid_DB")
    sheet = wb.worksheet('Oxygen')
    
    #Checking whether Google Cloud is able to access Google Sheets

    row = ['Google Sheet Accessed successfully', ':)']
    index = 9
    sheet.insert_row(row, index)

    #Sending the required info to the user

    twilio_response = MessagingResponse()
    msg = twilio_response.message()
    msg.body('1) ' + ', '.join(sheet.row_values(2)) + ' 2) ' + ', '.join(sheet.row_values(3)))

    return str(twilio_response)
    

谷歌云功能日志

Twilio错误日志

Twilio's-task-option-1-request

共有1个答案

梁丘琛
2023-03-14

当通过redirect从Twilio Autopilot调用URL时,需要为Twilio Autopilot返回JSON,而不是Twiml。

您需要更改构建返回消息的部分:

twilio_response = MessagingResponse()
msg = twilio_response.message()
msg.body('1) ' + ', '.join(sheet.row_values(2)) + ' 2) ' + ', '.join(sheet.row_values(3)))
return str(twilio_response)

在此处返回JSON:

from flask import jsonify
body = {
    'actions': [
        {
            'say': '1) ' + ', '.join(sheet.row_values(2)) + ' 2) ' + ', '.join(sheet.row_values(3))
        },
        {
            'listen': True
        }
    ]
}
return jsonify(body)

有关Twilio Autopilot支持的操作列表,请参见“操作概述”。

 类似资料:
  • 聊天机器人:嘿,你介意回答几个问题吗? 顾客:如果是,继续提问/如果不是,向顾客致谢并停止对话。 我在Twilio Autopilot上使用了示例调查机器人,但它实际上没有“if/else”场景。如果Twilio没有它,那么还有其他适合于此的聊天机器人吗?

  • 我正在使用带有可编程语音的Twilio自动驾驶仪作为输入通道,我想记录客户端与机器人的整个对话。 我在哪里以及如何做到这一点? 我正在使用重定向到Autopilot URL的twiML bin。

  • 9.17 自动驾驶 感知算法实习 一面 自我介绍 ResNet数学原理 one two stage网络代表和区别 SSD yolo Faster RCNN roi pooling和roi algin torch动态图 python装饰器 CaDDN流程 DETR流程 DETR3D deformable attention mmcv中的hook runner机制 反向传播 mAP计算 9.21 二面