首页 > 解决方案 > 使用正则表达式实体自定义对话流聊天机器人中的密码长度

问题描述

使用 Dialogflow 聊天机器人注册时,密码长度必须至少为 6 个字符。我使用了系统实体“任何”。但它是如此笼统。Webhook 是用烧瓶 python 编写的。

还尝试通过使用 [0-9]{6}$ 作为正则表达式实体来做到这一点。但无法找到执行此任务的正确方法。

from dialogflow_fulfillment import QuickReplies, WebhookClient, Payload
from flask import Flask, request, Response, jsonify , make_response
import json
import requests

app = Flask(__name__)

def handler(agent: WebhookClient) :
    """Handle the webhook request.."""

    req = request.get_json(force=True)
    intent_name = req.get('queryResult').get('intent').get('displayName')

    if intent_name == 'intro':
        agent.add('I am the chatbot of this page. Ready to assist you with anything you need. What would you like to do?')
        agent.add(QuickReplies(quick_replies=['START NOW','LOGIN']))

    if intent_name == 'get_started':
        url = 'http://**********.com/create_account'
        userid = req.get('queryResult').get('parameters').get('email')
        print(userid)
        pwd = req.get('queryResult').get('parameters').get('pwd')
        print(pwd)
        name = req.get('queryResult').get('parameters').get('person')['name']
        print(name)
        age = req.get('queryResult').get('parameters').get('age')
        print(age)     
        myobj = {'userid': userid, 'pwd': pwd , 'name' : name, 'age' : age}
        x = requests.post(url, data = myobj)
        result=x.text
        agent.add(result)
        

    if intent_name == 'login_screen' :
        url = 'http://**********.com/auth_account'
        userid = req.get('queryResult').get('parameters').get('email')
        print(userid)
        pwd = req.get('queryResult').get('parameters').get('pwd')
        print(pwd)
        myobj = {'userid': userid, 'pwd': pwd }
        x = requests.post(url, data = myobj)
        result = x.text
        agent.add(result)

@app.route('/webhook', methods=['GET', 'POST'])
def webhook():
    """Handle webhook requests from Dialogflow."""
    req = request.get_json(force=True)
    agent = WebhookClient(req)
    agent.handle_request(handler)
    return agent.response

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

使用正则表达式:定义的正则表达式: 正则表达式实体

它只是识别相同的训练密码 如果我输入密码 1234567,它无法识别

如何正确执行此操作?如何在其中使用正则表达式?还是我应该使用另一种方法?

标签: pythonregexflaskdialogflow-esentities

解决方案


推荐阅读