HA установлен через docker. Yandex Station работает отлично. Но не получается заставить работать диалоги.
При попытке указать данные в Yandex Dialogs получаю ошибку:
Ошибка при проверке навыка:
HTTP ошибка в ответе webhook: 500
При этом навык создается в черновики, но не публикуется. Если опубликовать вручную, то Алиса говорит, мол навык не отвечает.
https://XXX.duckdns.org/api/yandex_dialogs -> 405: Method Not Allowed
В настройках Yandex Dialogs пусто, нет id.
Не могу понять, что делаю не так.
Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
Модератор: immortal
-
Amarok
- Сообщения: 1425
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
-
Благодарил (а):
460 раз -
Поблагодарили:
126 раз - Контактная информация:
Re: Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
При попытке пройти модерацию получаю ответ:
Код: Выделить всё
Ошибки валидации:
— Webhook URL: 1. HTTP ошибка в ответе webhook: 500
Что не так и куда копать? По https моя Алиса отвечает.
-
Amarok
- Сообщения: 1425
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
-
Благодарил (а):
460 раз -
Поблагодарили:
126 раз - Контактная информация:
Re: Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
Сообщение
Amarok » Ср янв 09, 2019 11:59 am
Получил ответ от модераторов:
Код: Выделить всё
Здравствуйте!
Ваш навык не прошёл модерацию по следующим причинам:
Активационные имена:
Каждое активационное имя должно являться аббревиатурой либо склонением названия навыка, либо сокращенной/развернутой формой от Названия навыка
Примеры:
для Названия навыка "Космический квест" можно использовать имя "игра космический квест";
для названия навыка "ТКС" можно использовать имя "Тиньков";
для названия навыка "Сбербанк" можно использовать "Сбербанку", "Сбербанка".
Имя должно содержать уникальные слова, а не только общие фразы и/или фразы, являющиеся категориями товаров, сервисов или контента.
Можно:"Настоящий белорус", "Подарки от Максимки", "Случайный хайку" - это простые, но в тоже время оригинальные названия.
Нельзя: "Чай" - это категория товаров, "Как дела" - это очень общая фраза, "Англо-русский словарь" - это категория контента, "Умный дом" - это категория товаров, "Продуктовый магазин" - это категория сервисов.
Описание:
Описание должно содержать информацию о функциях навыка Алисы, то есть это должен быть осмысленный текст описания функций и создателей диалога.
Приветственное сообщение:
Приватный навык должен сообщать пользователям в приветственном сообщении о том, что он является закрытым
За разъяснениями вы всегда можете обратиться в службу поддержки: dialogs@support.yandex.ru
С уважением,
команда Яндекс Диалогов
Как замутить это приветственное сообщение?
-
chimik
- Сообщения: 77
- Зарегистрирован: Пн янв 09, 2017 1:39 pm
-
Благодарил (а):
87 раз -
Поблагодарили:
11 раз
Re: Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
Сообщение
chimik » Ср янв 09, 2019 1:07 pm
Код: Выделить всё
<?php
//получаем данные
$requestBody = file_get_contents('php://input');
//декодим данные
$json = json_decode($requestBody);
$text = $json->request->command;
$sessionnew = $json->session->new;
$message_id = $json->session->message_id;
$session_id = $json->session->session_id;
$user_id = $json->session->user_id;
//передаем команду в систему
$_SERVER['PHP_AUTH_USER'] = '*******';
$_SERVER['PHP_AUTH_PW'] = '***';
include_once("./config.php");
include_once("./lib/loader.php");
$session = new session("prj");
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
include_once(DIR_MODULES . "application.class.php");
include_once("./load_settings.php");
say(htmlspecialchars($text), 0, 1);
// читаем ответ
$sqlQuery = "SELECT MESSAGE
FROM shouts
WHERE MEMBER_ID = 0
ORDER BY ID DESC
LIMIT 1";
//$speech02 = current(SQLSelectOne($sqlQuery));
$speech = "Принято: $text";
if ($text == 'пока') $speech = "Пока Пока";
//отвечаем яндексу
if ($sessionnew == true) $speech = "Привет друзья! Этот навык является закрытым и предназначен для моей семьи и гостей моего дома. Чем могу помочь?";
$response = new stdClass();
$response->response->text = $speech;
$response->response->tts = $speech;
$response->response->end_session = false;
if ($text == 'пока') $response->response->end_session = true;
$response->session->message_id = $message_id;
$response->session->session_id = $session_id;
$response->session->user_id = $user_id;
$response->version = '1.0';
echo json_encode($response);
?>
У меня так. Со второго раза модерацию прошла. Проблема: в систему сыпется команда «ping». Что это? или достаточно отфильтровать команду?
Последний раз редактировалось chimik Ср янв 09, 2019 2:13 pm, всего редактировалось 1 раз.
-
vitt76
- Сообщения: 372
- Зарегистрирован: Вс апр 09, 2017 2:36 pm
-
Благодарил (а):
101 раз -
Поблагодарили:
51 раз
Re: Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
Сообщение
vitt76 » Ср янв 09, 2019 1:09 pm
chimik, пароли уберите из кода ))
- За это сообщение автора vitt76 поблагодарил:
- chimik (Ср янв 09, 2019 3:13 pm)
Broadlink + Orange Pi PC ARMBIAN 5.31
-
Amarok
- Сообщения: 1425
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
-
Благодарил (а):
460 раз -
Поблагодарили:
126 раз - Контактная информация:
Re: Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
Сообщение
Amarok » Ср янв 09, 2019 1:34 pm
vitt76 писал(а): ↑
Ср янв 09, 2019 1:09 pm
chimik, пароли уберите из кода ))
Кстати, как пароли считывать из основного конфига?
-
vitt76
- Сообщения: 372
- Зарегистрирован: Вс апр 09, 2017 2:36 pm
-
Благодарил (а):
101 раз -
Поблагодарили:
51 раз
Re: Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
Сообщение
vitt76 » Ср янв 09, 2019 3:07 pm
Да, наврно, можно было бы теоретически заинклюдить конфиг и считать оттуда, я что-то не подумал
Broadlink + Orange Pi PC ARMBIAN 5.31
-
Stasev
- Сообщения: 16
- Зарегистрирован: Пн мар 19, 2018 12:55 am
-
Благодарил (а):
6 раз -
Поблагодарили:
3 раза
Re: Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
Сообщение
Stasev » Ср янв 16, 2019 7:30 pm
chimik писал(а): ↑
Ср янв 09, 2019 1:07 pm
У меня так. Со второго раза модерацию прошла. Проблема: в систему сыпется команда «ping». Что это? или достаточно отфильтровать команду?
Как победили пинги?
18:26 Алиса: Неизвестная команда…
18:26 Admin: ping
В интернетах пишут:…
Раз в 10 сек Яндекс отправляет навыку сообщение ‘ping’ , проверяя его работоспособность. Если навык не будет отвечать, то через некоторое время его удалят
Пока сделал фильтр на это слово. Вот только не знаю — закрывать сессию или нет?
-
Amarok
- Сообщения: 1425
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
-
Благодарил (а):
460 раз -
Поблагодарили:
126 раз - Контактная информация:
Re: Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
Сообщение
Amarok » Чт янв 24, 2019 8:41 am
C_3AXAPOB писал(а): ↑
Ср янв 23, 2019 9:37 pm
С третьего раза прошел модерацию. Модератору не нравилась активационная фраза.
Можно пример правильной и неправильной фразы?
-
C_3AXAPOB
- Сообщения: 510
- Зарегистрирован: Ср июн 08, 2016 4:17 pm
-
Благодарил (а):
124 раза -
Поблагодарили:
100 раз
Re: Альтернативное решение по интеграции с Яндекс.диалоги (Алиса)
Сообщение
C_3AXAPOB » Чт янв 24, 2019 10:21 am
Amarok писал(а): ↑
Чт янв 24, 2019 8:41 am
Можно пример правильной и неправильной фразы?
Неправильные фразы:
управдом — надо два слова
мой управдом — недостаточно уникальная фраза
Правильная фраза:
господин управдом
Соответственно можно вызвать так
Алиса, попроси господина управдома выключить свет в комнате
или так
Алиса, скажи господину управдому выключить свет в комнате
Еще одной из претензий было вот это
Вебхук и сценарий:
Навык должен отдавать инструкцию по своему использованию на команды «Помощь» и «Что ты умеешь».
Пришлось тоже добавить.
Ещё я в вебхук добавил фильтр на «ping»
Код: Выделить всё
if ($text !== 'ping') say(htmlspecialchars($text), 0, 1);
Searching on a solution for the error “Webhook 500 internal server error”? We can help you.
Usually, this error indicates bad scripting, permission problems, etc.
At Bobcares, we often get requests to fix Webhook errors, as a part of our Server Management Services.
Today, let’s see how our Support Engineers fix the Webhook 500 error in the server.
Why does Webhook show internal server error?
Before getting deeper into the error, it’s important to know about Webhook. So let’s get into it.
Webhook is one of the easiest ways to set up custom callbacks. These user-defined HTTP callbacks can serve many purposes like getting real-time data, passing it on to an application, etc.
Similarly, it also processes the data and gives something in return. Like, sending welcome emails when a domain gets a new user. This reduces the task of monitoring every activity on a website.
But, errors in Webhook is tricky. One such error is 500 internal server error.
This is a very general status code. Usually, it indicates errors in the webserver. And the webserver cannot complete the user request. That is, the server is unable to identify the reason for it.
Since the webhook is customizable, the error normally occurs due to bad scripting, insecure URL requests, etc.
How we fix the Webhook 500 error?
Internal server errors are difficult to troubleshoot. However, our Support Engineers with expertise over a decade fix these errors for our customers. Let’s see a few instances of this.
Use of insecure connection
Recently, one of our customers approached us with a Webhook 500 error. He had set up a Dialogflow, and the Webhook keeps on failing. Dialogflow is a chatbot building framework.
The error message on its diagnostic info appeared as:
So, our Support Team checked his script. We found that his code used HTTP requests instead of https. Hence the URLs were not publicly accessible and this leads to the error. We corrected the code and updated the same.
At the same time, the website should also have an SSL certificate. Setting up a self-signed certificate is not enough as Dialogflow doesn’t support it.
Bad scripting
Webhook users can customize its use. But many times it ends up in errors. And the reason for this is bad scripting.
Our customers approach us for 500 errors in Webhook. Firstly, we check their scripts. If our Experts find errors we correct it and update the same. In most situations, this can fix the error.
Permission errors
Usually, file and folder permissions can result in Webhook 500 errors. So, whenever our Support Team gets requests to fix this error, we check permissions.
Server files and folders need correct permissions and ownerships set in order to work properly. If Websites requests files for which the server has no access then it will lead to an error.
[Need assistance in fixing Webhook errors? – We’ll help you.]
Conclusion
In short, webhook 500 internal server error occurs due to bad scripting, permission errors, insecure URL requests and so on. Today, we saw how our Support Engineers fix this error for our customers.
PREVENT YOUR SERVER FROM CRASHING!
Never again lose customers to poor server speed! Let us help you.
Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.
GET STARTED
var google_conversion_label = «owonCMyG5nEQ0aD71QM»;
Привет! Спасибо за реализацию на php!
Но не публикуется.
Ругается так: Ошибка в ответе Webhook
Хотя через Postman на запрос с сервера (Подсмотрел в логе):
{"meta":{"client_id":"Developer Console","locale":"ru-RU","timezone":"UTC"},"request":{"command":"test","original_utterance":"test","type":"SimpleUtterance"},"session":{"message_id":0,"new":true,"session_id":"61c5f901-22ba20bd-534104b2-1db70","skill_id":"3bbaf06a-1318-4f90-a9da-0a37c7967d8f","user_id":"FB80F23261CBB89F7D78B179AB439E543267D498BCADAAB0CE6223108268C08D"},"version":"1.0"}
отвечает так:
{
"version": "1.0",
"session": {
"session_id": "61c5f901-22ba20bd-534104b2-1db70",
"message_id": 0,
"user_id": "FB80F23261CBB89F7D78B179AB439E543267D498BCADAAB0CE6223108268C08D"
},
"response": {
"text": "В вашем запросе 4 символов",
"tts": "в в+ашем запр+осе 4 с+имволов",
"buttons": [],
"end_session": false
}
}
Вроде все совпадает с инструкцией…
Что может быть?
Recommend Projects
-
ReactA declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
TypescriptTypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlowAn Open Source Machine Learning Framework for Everyone
-
DjangoThe Web framework for perfectionists with deadlines.
-
LaravelA PHP framework for web artisans
-
D3Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
FacebookWe are working to build community through open source technology. NB: members must have two-factor auth.
-
MicrosoftOpen source projects and samples from Microsoft.
-
GoogleGoogle ❤️ Open Source for everyone.
-
AlibabaAlibaba Open Source for everyone
-
D3Data-Driven Documents codes.
-
TencentChina tencent open source team.