samples/dotnet/inproc/ репозитория (veriqa.app/source) под лицензией
MIT.
Как устроен каждый
Каждый пример — один процесс в двух ролях: издатель Veriqa (встроенный) и бэкенд, который обращается к нему только через публичный HTTP API. Направьте бэкенд на отдельно развёрнутую Veriqa — он будет работать так же.POST /connect/tokenсgrant_type=client_credentials.POST /api/transaction/confirmationс объявленнымaction_typeи егоslot_values.- Страница показывает
channel_entry.qr— картинку QR, которую возвращает API, — для сканирования телефоном. - Бэкенд опрашивает
GET /api/transaction/{id}/result. - При
confirmedтранзакцию можно один раз обменять наid_tokenподтвердившего (grant_type=urn:veriqa:params:oauth:grant-type:confirmation).
Настройка, на которой всё держится
В записи клиента бэкенда вappsettings.json:
AllowClientCredentials: true— бэкенд может получить токен для API (нуженClientSecret);AllowConfirmationTokenGrant: trueиopenidвAllowedScopes— шаг 5;MessageTemplates:<тип действия>— объявление действия:Contract:SlotsиTemplates. Его место — в записи клиента; тип действия, объявленный только на уровне хоста, отклоняется сaction_type_unknown;- для
step-upещёIdentityMatchComparableTypes— объявление личности, которая сверяется с подтвердившим. Без него запрос отклоняется сcandidate_type_undeclared.
Veriqa:Channels:OutcomeNotice:DisplayIntent = NewMessage: квитанция
приходит отдельным сообщением, а вопрос с формулировкой действия остаётся в переписке. См.
OutcomeNotice в Конфигурации.
Запуск примера
Каждому примеру нужны доверенный локальный HTTPS-сертификат (dotnet dev-certs https --trust) и
токен бота Telegram от @BotFather. Передавайте токен через user secrets, а
не через файл в репозитории:
step-up и agent-approval замените путь проекта. В Development бот работает в режиме
polling, публичный адрес не нужен. Без включённого канала создание подтверждения отвечает
503 channel_display_failed.
Что попробовать в каждом:
- confirmation — нажмите Ask for approval и подтвердите в боте: страница покажет
Outcome: confirmedи claimsid_token. - step-up — удалите проект: первый подтвердивший становится владельцем. Удалите другой с другого аккаунта Telegram: подтверждение пройдёт, но страница ответит Not deleted — confirmed, but not by the owner.
- agent-approval — нажмите Hand the ticket to the agent: агент остановится на
refund_payment, пока вы не одобрите вызов. Во втором прогоне откажите: возврат не выполнится, и агент сообщит клиенту, что с ним свяжется коллега. Агент идёт по фиксированному плану, поэтому ни модель, ни API-ключ не нужны.