sberdevices / salute-issues

Salute Issues — пространство для предложений и обсуждения багов в продуктах семейства Виртуальных Ассистентов "Салют"
https://sber.ru/salute
23 stars 3 forks source link

[SmartApp API] Запросы от Сбер-платформы не доходят до api gateway Яндекс.Облака #251

Closed vitalets closed 3 years ago

vitalets commented 3 years ago

Где нашелся баг: в инструментах

Описание проблемы: Есть вебхук, развернутый на api gateway Яндекс.облака https://d5daobsjh4k53557c2nk.apigw.yandexcloud.net/test/sber.

Он корректно обрабатывает запросы от сбера.

Можно проверить через curl: ``` curl -v --http1.1 -H "Content-type: application/json" --data-raw '{ "messageId": 1238322223, "sessionId": "1285534225", "messageName": "MESSAGE_TO_SKILL", "uuid": { "sub": "lhq+45udIbETCw/FYL7gym4ZV4gnezncM=", "userChannel": "channel", "userId": "userId" }, "payload": { "token": "12333453", "app_info": { "projectId": "1234563333" }, "device": { "type": "Android"}, "new_session": false, "character":{ "id": "Sber", "name": "Сбер", "gender": "male", "appeal": "official" }, "annotations": {}, "message": { "original_text": "/start", "tokenized_elements_list": [], "normalized_text": "", "entities": {}, "asr_normalized_message": "" } } }' https://d5daobsjh4k53557c2nk.apigw.yandexcloud.net/test/sber ``` Ответ: ``` < HTTP/1.1 200 OK < date: Thu, 19 Aug 2021 10:11:45 GMT < content-type: application/json < access-control-allow-origin: * < x-content-type-options: nosniff < x-request-id: ea1bf60d-8121-480f-9fe9-23eaec0dd4ae < x-serverless-gateway-id: d5daobsjh4k53557c2nk < x-serverless-gateway-path: /test/sber < x-server-trace-id: 80e7429c1adad51a:d8aa405b24a7e61a:80e7429c1adad51a:1 < server: Yandex-API-Gateway/1.0 < transfer-encoding: chunked < * Connection #0 to host d5daobsjh4k53557c2nk.apigw.yandexcloud.net left intact {"messageName":"ANSWER_TO_USER","sessionId":"1285534225","messageId":1238322223,"uuid":{"sub":"lhq+45udIbETCw/FYL7gym4ZV4gnezncM=","userChannel":"channel","userId":"userId"},"payload":{"pronounceText":"Вы сказали: /start","pronounceTextType":"application/ssml","intent":"","device":{"type":"Android"},"items":[{"bubble":{"text":"Вы сказали: /start"}}],"suggestions":{"buttons":[{"title":"Кнопка","action":{"type":"text","text":"Кнопка"}}]},"auto_listening":true,"finished":false,"emotion":{"emotionId":"oups"}}}* Closing connection 0 ```

Вставляю этот же урл в качестве вебхука в студии: image На вкладке тестирование все время ошибка: image

Проблема воспроизводится у других пользователей? не знаю.

Дополнительная информация: Общался с поддержкой я.облака, они запросы от сбера к api gateway не видят (а запросы через curl видят). Т.е. нужны или пруфы/логи, что запросы действительно уходят, либо искать проблему внутри сбера. Есть гипотеза, что эти запросы режет СБ.

cc @skobets

Genenko-Svetlana commented 3 years ago

Пришлите, пожалуйста, messageId. Попробуем посмотреть логи.

vitalets commented 3 years ago

Пришлите, пожалуйста, messageId. Попробуем посмотреть логи.

{
  "devContext": [],
  "meta": {},
  "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MjJjNzRkYTA5NmU4YjdiMjI5NThhOGFhN2YzM2M3NTdmOWYzODNhNmY5YjVlZjhmMmVhYWFkYmU2YzRmOTQyNTM5YmU5MjcwMDQyNjI5OCIsImF1ZCI6IlZQUyIsImV4cCI6MTYyOTQ1MjY5OCwiaWF0IjoxNjI5MzY2Mjg4LCJpc3MiOiJLRVlNQVNURVIiLCJ0eXBlIjoiQmVhcmVyIiwianRpIjoiZWE3NTYxOGMtOGQwNC00MjlmLTkyNmEtMjVkOTc3YWJiZWQ1Iiwic2lkIjoiMTM3NTUwMDMtMTU3MS00MTE4LThmZWEtYzUyYmMyNjFhOTlmIn0.ewRjC8p8bvaS2KK88KpE-JEUouKmjJMKiuIHlwThUpNyt88TNOg30J_oPkfHA6sljhDDw4ICNeT-rnKAm0-HZcTWnaqXO0wmsKSJaTIlY6hkzQKwM6UbB7XH6m_z3anAgunBKTI-r4wyB5YnK3xkpthoQ4YH4VYOPdgPm0eSHPtzliR-R1zejewQWtNhgFuK3oVh3QhQdtftNY4xY_6kcNI8R8s6AIBg3dtKraOZZip0G3Xrh6FZeLZu2hhE2Q_3KnU3EDGek1ExSu7uzK2gVSZQmcZeT2VC9SgcMcTDWzycvxT89yEJ7ZFXSvHShTSM94lNvxWlxz4VlMKqOb0uT20Q9GE5qLlIUNC9NHQhYS1s6t3fkpAlkgBDpMBlwUz47kX3xn8l0iu4unAYl4LfAFpeX_3MX-QSXOCdh2m-oPhVZX__6pxWtOofQw6bm4C1YbNPlCvfpk2xnaufJ3DjiOtiquF8O0qdosyl6R6fmy0gfuKhYp6X2vDdh0pcfMGqsmwJiI2J9_98m_5Bq-1Dw7sdFzmIhpvGtAnxZcy22T59JN_Z0lPNiKaCHKdQqoFM0QHRxwaxrdnPiP02bLN3y-mFc6rkpW76WLaghN6I7i8eSeCM2lNku6R1Po7HUzPP0V6L0CFO-20CsQ__OOqYopX9Txxkjtd0oUvdvf8tYfc",
  "version": 5,
  "text": {
    "data": "Запусти Мой прокси"
  },
  "last": 1,
  "messageId": 1629383250076
}
Genenko-Svetlana commented 3 years ago

Запрос ушёл в навык и навык вернул ERROR, http code = 426. Ошибка на стороне Яндекса.

vitalets commented 3 years ago

Запрос ушёл в навык и навык вернул ERROR, http code = 426. Ошибка на стороне Яндекса.

А можно посмотреть полный HTTP лог запроса?

vitalets commented 3 years ago

Когда запросы до Яндекса доходят, их видно: image

Genenko-Svetlana commented 3 years ago

Не нашли проблему на нашей стороне.

Наши запросы выполняются с http/1.1 Почему внешний навык отдает 426? Не понятно.

vitalets commented 3 years ago

Смотрите, нам нужен пруф, что запрос вышел за пределы инфраструктуры сбера. Код 426 может отдавать как один из шлюзов внутри, так и гейтвей я.облака. Чтобы понять, куда дальше копать, нужно попробовать добыть этот лог. На стороне я.облака запросов от сбера не видно. Можете показать полный http-лог запроса, демонстрирующий код ответа 426?

Genenko-Svetlana commented 3 years ago

@vitalets Вебхук - https://d5daobsjh4k53557c2nk.apigw.yandexcloud.net/test/sber - который указан в тикете, уже недоступен Подскажите, пожалуйста, актуальна ли еще проблема? Если "да", нужен актуальный урл.

vitalets commented 3 years ago

@Genenko-Svetlana Какой командой проверяете? Какую ошибку получаете?

Только что проверил командой из моего первого сообщения, ответ приходит: * Trying 84.201.185.129... * TCP_NODELAY set * Connected to d5daobsjh4k53557c2nk.apigw.yandexcloud.net (84.201.185.129) port 443 (#0) * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/ssl/cert.pem CApath: none * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305 * ALPN, server accepted to use http/1.1 * Server certificate: * subject: C=RU; L=Moscow; OU=ITO; O=Yandex LLC; CN=*.apigw.yandexcloud.net * start date: Sep 16 12:28:57 2021 GMT * expire date: Mar 17 00:00:00 2022 GMT * subjectAltName: host "d5daobsjh4k53557c2nk.apigw.yandexcloud.net" matched cert's "*.apigw.yandexcloud.net" * issuer: C=RU; O=Yandex LLC; OU=Yandex Certification Authority; CN=Yandex CA * SSL certificate verify ok. > POST /test/sber HTTP/1.1 > Host: d5daobsjh4k53557c2nk.apigw.yandexcloud.net > User-Agent: curl/7.64.1 > Accept: */* > Content-type: application/json > Content-Length: 842 > * upload completely sent off: 842 out of 842 bytes < HTTP/1.1 200 OK < date: Mon, 11 Oct 2021 16:38:54 GMT < content-type: application/json < access-control-allow-origin: * < x-content-type-options: nosniff < x-request-id: 90c3be02-c858-4ef1-9f5b-af809dd2f5db < x-serverless-gateway-id: d5daobsjh4k53557c2nk < x-serverless-gateway-path: /test/sber < x-server-trace-id: c7ac79f6d7d73b07:8273027ac0825b94:c7ac79f6d7d73b07:1 < server: Yandex-API-Gateway/1.0 < transfer-encoding: chunked < * Connection #0 to host d5daobsjh4k53557c2nk.apigw.yandexcloud.net left intact {"messageName":"ANSWER_TO_USER","sessionId":"1285534225","messageId":1238322223,"uuid":{"sub":"lhq+45udIbETCw/FYL7gym4ZV4gnezncM=","userChannel":"channel","userId":"userId"},"payload":{"pronounceText":"Вы сказали: /start","pronounceTextType":"application/ssml","intent":"","device":{"type":"Android"},"items":[{"bubble":{"text":"Вы сказали: /start"}}],"suggestions":{"buttons":[{"title":"Кнопка","action":{"type":"text","text":"Кнопка"}}]},"auto_listening":true,"finished":false,"emotion":{"emotionId":"oups"}}}* Closing connection 0
vitalets commented 3 years ago

@skobets написал в личку, что проблему нашли и исправили.

Проверил - теперь все работает! Спасибо! Запросы от Сбера в логах Я.Облака появились и в тестировании в студии отрабатывают корректно!

image