Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
from number_with_type_prompt import NumberWithTypePrompt, NumberWithTypePromptType
from number_with_unit_prompt import NumberWithUnitPrompt, NumberWithUnitPromptType
from number_with_unit_prompt import NumberWithUnitPrompt, NumberWithUnitPromptType,NumberWithUnitResult
from phone_prompt import PhoneNumberPrompt
from email_prompt import EmailPrompt

__all__ = [
"NumberWithUnitPrompt",
"NumberWithUnitPromptType",
"NumberWithUnitResult",
"NumberWithTypePromptType",
"NumberWithTypePrompt",
"PhoneNumberPrompt"
"PhoneNumberPrompt",
"EmailPrompt"
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from botbuilder.dialogs.prompts import Prompt, PromptOptions,PromptRecognizerResult
from botbuilder.core.turn_context import TurnContext
from botbuilder.schema import ActivityTypes
from recognizers_text import Culture, ModelResult,StringUtility
from recognizers_sequence import SequenceRecognizer

from typing import Callable, Dict
import enum

class EmailPrompt (Prompt):
def __init__(self,
dialog_id,
validator : object = None,
defaultLocale = None):
super().__init__(dialog_id, validator=validator)

if defaultLocale is None:
defaultLocale = Culture.English

self._defaultLocale = defaultLocale

async def on_prompt(
self,
turn_context: TurnContext,
state: Dict[str, object],
options: PromptOptions,
is_retry: bool,
):
if not turn_context:
raise TypeError("turn_context Can’t be none")
if not options:
raise TypeError("options Can’t be none")

if is_retry and options.retry_prompt is not None:
await turn_context.send_activity(options.retry_prompt)
else:
if options.prompt is not None:
await turn_context.send_activity(options.prompt)

async def on_recognize(self,
turn_context: TurnContext,
state: Dict[str, object],
options: PromptOptions,
) -> PromptRecognizerResult:
if not turn_context:
raise TypeError("turn_context Can’t be none")

if turn_context.activity.type == ActivityTypes.message:
utterance = turn_context.activity.text

turn_context.activity.locale = self._defaultLocale

recognizer_result = PromptRecognizerResult()

recognizer = SequenceRecognizer(turn_context.activity.locale)
model = recognizer.get_email_model()

model_result = model.parse(utterance)

if len(model_result) > 0 and len(model_result[0].resolution) > 0:
recognizer_result.succeeded = True
recognizer_result.value = model_result[0].resolution["value"]

return recognizer_result
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import sys
import pathlib
import pytest
import aiounittest
import asyncio

current = pathlib.Path(__file__).parent.parent
libpath = current.joinpath("source")
sys.path.append(str(libpath))

from botbuilder.dialogs.prompts import (
AttachmentPrompt,
PromptOptions,
PromptValidatorContext,
)

from botbuilder.core import (
TurnContext,
ConversationState,
MemoryStorage,
MessageFactory,
)
from botbuilder.schema import Activity, ActivityTypes, Attachment
from botbuilder.core.adapters import TestAdapter
from botbuilder.dialogs import DialogSet, DialogTurnStatus
from email_prompt import EmailPrompt

class EmailPromptTest(aiounittest.AsyncTestCase):
async def test_email_prompt(self):
async def exec_test(turn_context:TurnContext):
dialog_context = await dialogs.create_context(turn_context)

results = await dialog_context.continue_dialog()
if (results.status == DialogTurnStatus.Empty):
options = PromptOptions(
prompt = Activity(
type = ActivityTypes.message,
text = "What is your email address?"
)
)
await dialog_context.prompt("emailprompt", options)

elif results.status == DialogTurnStatus.Complete:
reply = results.result
await turn_context.send_activity(reply)

await conv_state.save_changes(turn_context)

adapter = TestAdapter(exec_test)

conv_state = ConversationState(MemoryStorage())

dialog_state = conv_state.create_property("dialog-state")
dialogs = DialogSet(dialog_state)
dialogs.add(EmailPrompt("emailprompt"))

step1 = await adapter.test('Hello', 'What is your email address?')
step2 = await step1.send('My email id is r.vinoth@live.com')
await step2.assert_reply("r.vinoth@live.com")
Morty Proxy This is a proxified and sanitized view of the page, visit original site.