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)
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)
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
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
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) # Обновляем данные в хранилище, убираем первую подсказку, чтобы подсказки менялись
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)