Twilio не работает - после соединения с базой данных [на pythonanywhere] - PullRequest
0 голосов
/ 16 апреля 2020

Привет! Я хочу создать чат-бота для сбора информации о пользователе и сохранения пользовательских данных в базе данных MySQL. Я следовал этому учебнику , и все заработало, но после подключения к базе данных я не смог получить к нему доступ через SMS Twilio. Я все еще могу проверить поток чата из диалогового окна, но twilio не отвечает. Вот код ... он был большой, поэтому не мог разделить всю функцию webhook. Подскажите, пожалуйста, как подключиться к базе данных ... похоже, встроенный chatbot в диалоговом окне работает нормально, но мой основной мотив - работать с Twilio SMS. Как установить sh что? До подключения к базе данных все работало нормально, как в учебнике.

import json
import apiai
import os
from flask import Flask
from twilio.rest import Client
from twilio.http.http_client import TwilioHttpClient

from flask import request, make_response, jsonify



# Twilio account info
account_sid = "_####__"
auth_token = "_###__"
account_num = "+_###__"

proxy_client = TwilioHttpClient()
proxy_client.session.proxies = {'https': os.environ['https_proxy']}

client = Client(account_sid, auth_token, http_client=proxy_client)

# api.ai account info
CLIENT_ACCESS_TOKEN = "_###__"
ai = apiai.ApiAI(CLIENT_ACCESS_TOKEN)

app = Flask(__name__)


# ---database handling starts-----
# create a MySQL client connecting to your MySQL server
import mysql.connector
mydb = mysql.connector.connect(
  host="---###---",
  user="---###---",
  passwd="---###---",
  database="---###---"
)
mycursor = mydb.cursor()


# ----webhook method calling----
@app.route('/', methods=['POST'])
def webhook():
    global counting_id
    req = request.get_json(silent=True, force=True)
    action = req.get('queryResult').get('action')

    # WEBHOOK CODE

    # return make_response(jsonify({"speech": res}))




@app.route('/hello')
def hello_world():
    return 'Hello api.ai (from Flask!)'

@app.route("/", methods=['GET', 'POST'])
def server():
    from flask import request

    # get SMS metadata
    msg_from = request.values.get("From", None)
    msg = request.values.get("Body", None)
    # print(msg)
    # print('msg_from=', msg_from)

    # prepare API.ai request
    req = ai.text_request()
    req.lang = 'en'  # optional, default value equal 'en'
    req.query = msg
    # req.session_id = msg_from

    # print(ai)
    # print(req)

    # get response from API.ai
    api_response = req.getresponse()
    responsestr = api_response.read().decode('utf-8')
    response_obj = json.loads(responsestr)
    reply="Hello [reply from flask]"
    if 'result' in response_obj:
        response = response_obj["result"]["fulfillment"]["speech"]
        # send SMS response back via twilio
        reply=client.messages.create(to=msg_from, from_= account_num, body=response)

    return str(reply)


if __name__ == "__main__":
    app.run(debug=True)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...