コード例 #1
0
def test_add_list_of_texts(webhook_request):
    agent = WebhookClient(webhook_request)

    def handler(agent):
        agent.add(['this', 'is', 'a', 'list', 'of', 'texts'])

    agent.handle_request(handler)

    assert agent.response['fulfillmentMessages'] == [{
        'text': {
            'text': ['this']
        }
    }, {
        'text': {
            'text': ['is']
        }
    }, {
        'text': {
            'text': ['a']
        }
    }, {
        'text': {
            'text': ['list']
        }
    }, {
        'text': {
            'text': ['of']
        }
    }, {
        'text': {
            'text': ['texts']
        }
    }]
コード例 #2
0
def test_add_non_richresponse(webhook_request):
    agent = WebhookClient(webhook_request)

    def handler(agent):
        agent.add({'this': 'is not a RichResponse'})

    with pytest.raises(TypeError):
        agent.handle_request(handler)
コード例 #3
0
def handler(agent: WebhookClient) -> None:
    """
    Handle the webhook request.

    This handler sends a text message along with a quick replies
    message back to Dialogflow, which uses the messages to build
    the final response to the user.
    """
    agent.add('How are you feeling today?')
    agent.add(QuickReplies(quick_replies=['Happy :)', 'Sad :(']))
コード例 #4
0
def test_assign_followup_event(webhook_request):
    agent = WebhookClient(webhook_request)

    def handler(agent):
        agent.followup_event = 'test_event'

    agent.handle_request(handler)

    assert agent.response['followupEventInput'] == {
        'name': 'test_event',
        'languageCode': webhook_request['queryResult']['languageCode']
    }
コード例 #5
0
def test_no_contexts(webhook_request):
    modified_webhook_request = webhook_request
    modified_webhook_request['queryResult']['outputContexts'] = []

    agent = WebhookClient(modified_webhook_request)

    def handler(agent):
        pass

    agent.handle_request(handler)

    assert 'outputContexts' not in agent.response
コード例 #6
0
def test_add_text(webhook_request):
    agent = WebhookClient(webhook_request)

    def handler(agent):
        agent.add('this is a text')

    agent.handle_request(handler)

    assert agent.response['fulfillmentMessages'] == [{
        'text': {
            'text': ['this is a text']
        }
    }]
コード例 #7
0
def test_with_request_source(webhook_request):
    modified_webhook_request = webhook_request
    modified_webhook_request['originalDetectIntentRequest']['source'] = \
        'PLATFORM_UNSPECIFIED'

    agent = WebhookClient(modified_webhook_request)

    def handler(agent):
        pass

    agent.handle_request(handler)

    assert agent.response['source'] == 'PLATFORM_UNSPECIFIED'
コード例 #8
0
def test_set_followup_event_by_dict(webhook_request):
    agent = WebhookClient(webhook_request)

    def handler(agent):
        with pytest.warns(DeprecationWarning):
            agent.set_followup_event({'name': 'test_event'})

    agent.handle_request(handler)

    assert agent.response['followupEventInput'] == {
        'name': 'test_event',
        'languageCode': webhook_request['queryResult']['languageCode']
    }
コード例 #9
0
def handler2(agent: WebhookClient) -> None:
    con = Context(agent.context, agent.session)
    city = con.get("delivered")["parameters"]["geo-city"]
    resources = con.get("delivered")["parameters"]["resources"]
    pk_id = con.get("delivered")["parameters"]["id"]
    feed = con.get("delivered")["parameters"]["feedback"]
    sup = Supplier.objects.get(pk=pk_id)
    sup.status = feed
    sup.save()
    print(city)
    print(resources)
    if not feed == "helpful":
        dic = helpdata(city, resources)
        if dic["isany"]:
            con.get("delivered")["parameters"]["id"] = dic['id']
            agent.add(
                "Here is the detail we have found, might be helpful for you")
            agent.add(dic['name'] + '\n' + dic['number'] + '\n' +
                      dic["email"] + '\n' + dic["des"] + '\n' +
                      "last updated  " + dic['updated'])
            agent.add(
                " please give us you feedback on this supplier \n say helpful if it is useful,\n out of stock,\n say not answering or unresponsive if not replying,\n say fraud or scam,\n say wrong or invalid if it is wrong number"
            )
        else:
            con.delete("delivered")
    else:
        agent.add("thanks for information, I am happy to help you")
        con.delete("delivered")
コード例 #10
0
ファイル: Chatbot.py プロジェクト: Sundavr/Wikibot
def intent_switch(intent_name: str, queryResult: dict, agent: WebhookClient,
                  session: str) -> str:
    switcher = {
        "get_summary": get_summary,
        "how_are_you": how_are_you,
        "quick_summary": quick_summary,
        "set_language": set_language,
        "which_language": which_language,
    }
    func = switcher.get(intent_name)
    if (func != None):
        return func(queryResult, agent, session)
    print("Unknown intent : " + intent_name)
    agent.add(
        "Toute mes excuses, mais mon serveur à eu un léger soucis à comprendre ton intention :("
    )
    return agent
コード例 #11
0
ファイル: app.py プロジェクト: wags69a/dialogflow-fulfillment
def webhook() -> Dict:
    """Handle webhook requests from Dialogflow."""
    # Get WebhookRequest object
    request_ = request.get_json(force=True)

    # Log request headers and body
    logger.info(f'Request headers: {dict(request.headers)}')
    logger.info(f'Request body: {request_}')

    # Handle request
    agent = WebhookClient(request_)
    agent.handle_request(handler)

    # Log WebhookResponse object
    logger.info(f'Response body: {agent.response}')

    return agent.response
コード例 #12
0
ファイル: Chatbot.py プロジェクト: Sundavr/Wikibot
def quick_summary(queryResult: dict, agent: WebhookClient,
                  session: str) -> WebhookClient:
    information = queryResult["parameters"]["information"]
    print("quick summary :", information)
    try:
        if (wikipedia.API_URL.split(".")[0].split("/")[-1] !=
                sessions_lang[session]):
            wikipedia.set_lang(sessions_lang[session][0])
        response = wikipedia.summary(information, sentences=1).replace(
            " ()", '').replace("()", '')
        if len(response) > 4500:
            response = response[:4500] + " [...]"
        agent.add(response)
    except Exception:
        agent.add("Désolé, mais je suis incapable de te dire ce qu'est '" +
                  information + "'")
    return agent
コード例 #13
0
def test_with_unknown_message(webhook_request):
    modified_webhook_request = webhook_request
    modified_webhook_request['queryResult']['fulfillmentMessages'] = [{
        'foo': {
            'foo': ['bar']
        }
    }]

    with pytest.raises(TypeError):
        WebhookClient(modified_webhook_request)
コード例 #14
0
def webhook(request: HttpRequest) -> HttpResponse:
    """Handle webhook requests from Dialogflow."""
    if request.method == 'POST':
        # Get WebhookRequest object
        request_ = loads(request.body)

        # Log request headers and body
        logger.info(f'Request headers: {dict(request.headers)}')
        logger.info(f'Request body: {request_}')

        # Handle request
        agent = WebhookClient(request_)
        agent.handle_request(handler)

        # Log WebhookResponse object
        logger.info(f'Response body: {agent.response}')

        return JsonResponse(agent.response)

    return HttpResponse()
コード例 #15
0
ファイル: Chatbot.py プロジェクト: Sundavr/Wikibot
def webhook() -> Dict:
    request_ = request.get_json(force=True)
    session = request_['session'].split("/")[-1]
    if (not session in sessions_lang):
        sessions_lang[session] = ["fr", int(time.time())]
    else:
        sessions_lang[session][1] = int(time.time())
    queryResult = request_['queryResult']
    agent = WebhookClient(request_)
    agent = intent_switch(queryResult['intent']['displayName'], queryResult,
                          agent, session)
    return get_response(agent)
コード例 #16
0
ファイル: Chatbot.py プロジェクト: Sundavr/Wikibot
def set_language(queryResult: dict, agent: WebhookClient,
                 session: str) -> WebhookClient:
    language = queryResult["parameters"]["language"].lower()
    print("set_language", language)
    language_changed = False
    if ((language == "fr") or (language == "français")
            or (language == "french")):
        sessions_lang[session][0] = "fr"
        language_changed = True
    elif ((language == "en") or (language == "anglais")
          or (language == "english")):
        sessions_lang[session][0] = "en"
        language_changed = True
    if (language_changed):
        agent.add("Et hop ! Tes renseignements seront maintenant en " +
                  language)
    else:
        agent.add(
            "Désolé mais je ne suis pas en mesure de te trouver des renseignements dans cette langue :(."
        )
    return agent
コード例 #17
0
def test_handler_intent_map(webhook_request):
    agent = WebhookClient(webhook_request)

    handler = {
        'Default Welcome Intent': lambda agent: agent.add('Hello!'),
        'Default Fallback Intent': lambda agent: agent.add('What was that?'),
    }

    agent.handle_request(handler)

    assert agent.response['fulfillmentMessages'] == [{
        'text': {
            'text': ['Hello!']
        }
    }]
コード例 #18
0
def webhook(request: HttpRequest) -> HttpResponse:
    if request.method == 'POST':
        req = loads(request.body)

        # logger.info(f'Request headers:{dict(request.headers)}')
        # logger.info(f'Request body:{req}')

        agent = WebhookClient(req)
        if (agent.intent == "loop-back"):
            agent.handle_request(handler2)
        else:
            agent.handle_request(handler)

        # logger.info(f'Response body:{agent.response}')

        return JsonResponse(agent.response)
    return HttpResponse("hello")
コード例 #19
0
ファイル: Chatbot.py プロジェクト: Sundavr/Wikibot
def which_language(queryResult: dict, agent: WebhookClient,
                   session: str) -> WebhookClient:
    agent.add(
        "Je peux récupérer des informations en français ou en anglais si tu veux !"
    )
    return agent
コード例 #20
0
from dialogflow_fulfillment import QuickReplies, WebhookClient


# Define a custom handler function
def handler(agent: WebhookClient) -> None:
    """
    Handle the webhook request.

    This handler sends a text message along with a quick replies
    message back to Dialogflow, which uses the messages to build
    the final response to the user.
    """
    agent.add('How are you feeling today?')
    agent.add(QuickReplies(quick_replies=['Happy :)', 'Sad :(']))


# Create an instance of the WebhookClient
agent = WebhookClient(request)  # noqa: F821

# Handle the request using the handler function
agent.handle_request(handler)
コード例 #21
0
ファイル: Chatbot.py プロジェクト: Sundavr/Wikibot
def how_are_you(queryResult: dict, agent: WebhookClient,
                session: str) -> WebhookClient:
    agent.add(str(classifier(queryResult.get("queryText"))))
    return agent
コード例 #22
0
def test_set_followup_event_non_string_or_dict(webhook_request):
    agent = WebhookClient(webhook_request)

    with pytest.raises(TypeError):
        agent.followup_event = ['this', 'is', 'not', 'an', 'event']