我只能通过dialogflow获得一个whatsapp答案,而不是多个回复

时间:2019-09-13 01:33:54

标签: python twilio dialogflow chatbot

如何在whatsApp中获得多个“文本答案”?当我在意图中添加多个“文本响应”时,它们将在dialogFlow控制台中正常工作。

但是当我在whatsapp上重复同样的问题时,只会得到一个答案框,而不是我创建的3个答案框。

我正在使用twilio与whatsapp API进行通信。我还使用Horoku云服务托管应用程序。

一切正常。但是我在whatsapp中只收到一个消息框,而不是多个。 我认为问题出在我的python代码“ app.py”。

app.py

@app.route("/") #just to test Heroku cloud services
def hello():
    return "Hello, World!"

@app.route("/sms", methods=['POST'])
def sms_reply():
    """Respond to incoming calls with a simple text message."""
    # Fetch the message
    msg = request.form.get('Body')
    phone_no = request.form.get('From')
    reply = fetch_reply(msg, phone_no)

    # Create reply
    resp = MessagingResponse()
    resp.message(reply)
    enter code here
    return str(resp)

utils.py

import dialogflow_v2 as dialogflow
dialogflow_session_client = dialogflow.SessionsClient()
PROJECT_ID = "weather-husgcf"

def detect_intent_from_text(text, session_id, language_code='pt-BR'):
    session = dialogflow_session_client.session_path(PROJECT_ID, session_id)
    text_input = dialogflow.types.TextInput(text=text, language_code=language_code)
    query_input = dialogflow.types.QueryInput(text=text_input)
    response = dialogflow_session_client.detect_intent(session=session, query_input=query_input)
    return response.query_result

def fetch_reply(query, session_id):
    response = detect_intent_from_text(query, session_id)
    return response.fulfillment_text

https://i.imgur.com/a/b2QSYUB“屏幕截图”

1 个答案:

答案 0 :(得分:1)

这里是Twilio开发人员的传播者。

在您的fetch_reply方法中,调用query_result的{​​{1}}属性。根据{{​​3}},complementationText已弃用/遗留:

  

要向用户朗读或在屏幕上显示的文本。注意:这是一个旧字段,应首选实现消息。

fulfillment_text属性定义为QueryResult documentation对象的列表。因此,要返回所有3条消息,您的代码可能应该遍历消息,将它们添加到响应中,如下所示:

fullfillmentMessages

然后您的路线应如下所示:

def fetch_reply(query, session_id):
    response = detect_intent_from_text(query, session_id)
    return response.fulfillment_messages

我还没有测试过,只是从Message开始工作。让我知道是否有帮助。