Пример #1
0
    def test_buttons(self):
        title = 'Title'

        btn1 = types.Button(title)
        self._test_button(btn1, title)
        btn2 = types.Button(title, url='yandex.ru')
        self._test_button(btn2, title, 'yandex.ru')
        btn3 = types.Button(title, payload={'key': 'value'})
        self._test_button(btn3, title, payload={'key': 'value'})
        btn4 = types.Button(title,
                            payload={'json': {
                                'key': 'value'
                            }},
                            hide=False)
        self._test_button(btn4,
                          title,
                          payload={'json': {
                              'key': 'value'
                          }},
                          hide=False)
        btn5 = types.Button(title,
                            url='github.com',
                            payload={'json': {
                                'key': 'value'
                            }},
                            hide=False)
        self._test_button(btn5,
                          title,
                          url='github.com',
                          payload={'json': {
                              'key': 'value'
                          }},
                          hide=False)
Пример #2
0
 def test_response_from_request2(self):
     alice_request = types.AliceRequest(None, **ALICE_REQUEST)
     alice_response = alice_request.response(
         RESPONSE_TEXT,
         tts=TTS,
         buttons=[types.Button(BUTTON_TEXT, url=URL)])
     self._assert_payload(alice_response, EXPECTED_RESPONSE_WITH_BUTTONS)
Пример #3
0
def gen_thimbles():
    # Генерируем массив из 3 кнопок
    buttons = [types.Button(THIMBLE, payload={'win': False}) for _ in range(3)]
    # Делаем первую кнопку выигрышной
    buttons[0].payload['win'] = True
    # Смешиваем кнопки
    random.shuffle(buttons)
    logging.info(f'Thimbles are: {buttons}')
    return buttons
Пример #4
0
def gen_thimbles():
    # Генерируем массив из 3 кнопок
    # Первый аргумент - юникод символ черного кружочка
    # Аргумент по ключевому слову payload может содержать произвольный JSON
    buttons = [types.Button(THIMBLE, payload={'win': False}) for _ in range(3)]
    # Делаем первую кнопку выигрышной
    buttons[0].payload['win'] = True
    # Смешиваем кнопки
    random.shuffle(buttons)
    logging.info(f'Thimbles are: {buttons}')
    return buttons
Пример #5
0
WEBAPP_HOST = '0.0.0.0'
WEBAPP_PORT = 3001

logging.basicConfig(
    format=
    u'%(filename)s [LINE:%(lineno)d] #%(levelname)-8s [%(asctime)s]  %(message)s',
    level=logging.INFO)

# Создаем экземпляр диспетчера и подключаем хранилище в памяти
dp = Dispatcher(storage=MemoryStorage(),
                path=WEBHOOK_URL_PATH,
                name="buy_elefant")

ele_link = 'https://market.yandex.ru/search?text=слон'
# Заготавливаем кнопку на всякий случай
OK_Button = types.Button('Ладно', url=ele_link)


# Функция возвращает две подсказки для ответа.
async def get_suggests(user_id):
    # Получаем хранимые в памяти данные
    data = await dp.storage.get_data(user_id)
    # Не исключаем, что данные могут оказаться пустыми, получаем список подсказок
    user_suggests = data.get('suggests', [])
    # Выбираем две первые подсказки из массива.
    suggests = [text for text in user_suggests[:2]]
    # Если осталась только одна подсказка, предлагаем
    # подсказку (кнопку) со ссылкой на Яндекс.Маркет.
    if len(suggests) < 2:
        suggests.append(OK_Button)
    # Обновляем данные в хранилище, убираем первую подсказку, чтобы подсказки менялись
Пример #6
0
    def test_response_from_request(self):
        alice_request_json = {
            "meta": {
                "locale": "ru-RU",
                "timezone": "Europe/Moscow",
                "client_id": "ru.yandex.searchplugin/5.80 (Samsung Galaxy; Android 4.4)"
            },
            "request": {
                "command": "где ближайшее отделение",
                "original_utterance": "Алиса спроси у Сбербанка где ближайшее отделение",
                "type": "SimpleUtterance",
                "markup": {
                    "dangerous_context": True
                },
                "payload": None
            },
            "session": {
                "new": True,
                "message_id": 4,
                "session_id": "2eac4854-fce721f3-b845abba-20d60",
                "skill_id": "3ad36498-f5rd-4079-a14b-788652932056",
                "user_id": "AC9WC3DF6FCE052E45A4566A48E6B7193774B84814CE49A922E163B8B29881DC"
            },
            "version": "1.0"
        }
        alice_request = types.AliceRequest(**alice_request_json)

        resp_text = 'Здравствуйте! Это мы, хороводоведы.'
        alice_response = alice_request.response(resp_text)
        expected_response = {
            "response": {
                "text": resp_text,
                'tts': None,
                'buttons': None,
                "end_session": False
            },
            "session": {
                "session_id": "2eac4854-fce721f3-b845abba-20d60",
                "message_id": 4,
                "user_id": "AC9WC3DF6FCE052E45A4566A48E6B7193774B84814CE49A922E163B8B29881DC"
            },
            "version": "1.0"
        }
        self.assertEqual(alice_response.to_json(), expected_response)
        new_tts = "Здравствуйте! Это мы, хоров+одо в+еды."
        btn_title = "Надпись на кнопке"
        btn_url = "https://example.com/"
        new_btn = types.Button(btn_title, url=btn_url)
        expected_response["response"].update({
            "tts": new_tts,
            "buttons": [
                {
                    "title": btn_title,
                    "payload": None,
                    "url": btn_url,
                    "hide": True
                }
            ],
        })
        alice_response.response.tts = new_tts
        alice_response.response.buttons = [new_btn]
        self.assertEqual(alice_response.to_json(), expected_response)

        alice_response = alice_request.response(resp_text, tts=new_tts, buttons=[new_btn])
        self.assertEqual(alice_response.to_json(), expected_response)