Онбординг: рельсы, сценарии и взаимодействие
Содержание
Этот гайд для eSIM-бизнесов, которые уже продают — операторов, MVNO, реселлеров, тревел-платформ — и хотят видеть ИИ-агентов среди покупателей: что такое рельсы AIMarket, что даёт подключение, как взаимодействуют части и четыре способа подключиться, сохранив свою платформу.
Другие документы: обзор · интеграции · справочник SDK · гайд оператора · гайд для агентов
1. Что такое рельсы
AIMarket — федерация хабов, где ИИ-агенты находят возможности и платят за них. Работает это на трёх механизмах, и кит использует все три:
| Механизм | Что он даёт продавцу eSIM |
|---|---|
| Федерация и поиск | Ваш узел публикует подписанный манифест (/.well-known/ai-market.json). Хаб принимает его после вызова esim.quote с настоящей страной и вносит ваши возможности в каталог; хабы обмениваются каталогами, поэтому агент, который ищет в любом из них, находит вас. |
| Подписанные ответы | Каждый бесплатный ответ (предложения, статус) несёт подпись Ed25519 над запросом и результатом. Хабы проверяют её, прежде чем показать или передать вас; агенты тоже могут её проверить. |
| Платежи x402 | Платный вызов (esim.order) отвечает 402 Payment Required со своей ценой. Агент подписывает авторизацию USDC в Base; ваш узел проводит её через фасилитатор прямо на ваш кошелёк. |
Хаб направляет поиск, но никогда не деньги. Он не держит средства, не видит код активации и не берёт комиссию с прямых продаж.
flowchart LR
subgraph discovery["Поиск (хаб)"]
M["Ваш манифест<br/>подписан ключом узла"] --> ADM["Проверка при приёме<br/>esim.quote с настоящей страной"]
ADM --> L["В каталоге: esim.quote@v1, esim.status@v1"]
L --> S["market_search агентов<br/>на любом хабе федерации"]
end
subgraph trade["Сделка (напрямую)"]
Q["предложение — бесплатно, подписано"] --> O["заказ — 402, x402 USDC"]
O --> D["выдача — код активации"]
D --> ST["статус — бесплатно, по токену"]
end
S --> Q
2. Зачем подключаться
- Новый канал продаж, которому не нужно продавать. Агенты сравнивают предложения всех продавцов по цене, трафику и покрытию. Хорошую цену находят без маркетинга.
- Без интеграции под каждую платформу агентов. Один контракт,
esim.*@v1, — это то, что каждый агент использует с каждым продавцом. - Деньги без процессора. USDC в Base приходят на ваш кошелёк, когда eSIM выдана. Никаких чарджбэков: платёж проводится только после выдачи, а неудачное проведение отменяет eSIM.
- Ваши системы остаются вашими. Кит вызывает вашего поставщика или систему выдачи через пять эндпоинтов и сообщает вашей CRM и биллингу о каждой продаже подписанными вебхуками.
- Те же предложения для людей. Витрина по желанию продаёт тот же каталог с той же наценкой, на пяти языках, в десяти платёжных сетях.
3. Сценарии
3.1 Агент-турагент бронирует поездку и добавляет интернет
sequenceDiagram
participant U as Путешественник
participant Ag as Турагент (ИИ)
participant Hub as Хаб AIMarket
participant N as Узел продавца
U->>Ag: "Токио, 12 дней, нужен интернет"
Ag->>Hub: market_search "eSIM Japan"
Hub-->>Ag: продавцы с esim.quote@v1
Ag->>N: quote {country: JP, min_gb: 5, min_days: 12}
N-->>Ag: 3 предложения, подписаны
Ag->>U: "5 ГБ, 15 дней, $6.40 — покупаем?"
U->>Ag: да
Ag->>N: заказ + x402 USDC
N-->>Ag: код активации, QR, ссылка установки
Ag->>U: QR-код и шаги установки
3.2 Действующий реселлер добавляет канал агентов
Вы уже продаёте eSIM на своём сайте из своих источников. Вы запускаете кит с SUPPLIER=http и реализуете пять эндпоинтов в своей платформе. Ваша витрина остаётся как есть; витрину кита можно не включать. Каждая продажа агенту приходит в ваши системы вебхуком agent_order.delivered, а на ваш кошелёк — в USDC.
3.3 MVNO или телеком отдаёт свои профили
Ваш SM-DP+ или API выдачи создаёт профили. POST /orders HTTP-поставщика резервирует профиль, GET /profiles возвращает его код активации, когда он готов, а cancel возвращает неиспользованный на склад. Кит добавляет оплату x402, подписи и федерацию.
3.4 Ассистент корпоративных поездок и расходов
Ассистент, который бронирует поездки сотрудникам, покупает eSIM на каждую поездку, хранит esim_tran_no и status_token и проверяет esim.status перед возвращением сотрудника: расход трафика, оставшиеся дни. Финансы сверяют каждый платёж USDC с событиями вебхуков.
3.5 Супер-приложение или мини-приложение в Telegram
Приложение, построенное вокруг кошелька (TON, Telegram), вызывает узел продавца со своего бэкенда: предложение, затем заказ по x402 — или отправляет своих пользователей на витрину, которая принимает USDT в TON. Один и тот же узел обслуживает оба варианта.
3.6 Новый оператор, у которого есть только оптовый аккаунт
Аккаунт eSIM Access, сервер и домен: docker compose up даёт узел для агентов, узел федерации и витрину. Так работает esim-shop.modelmarket.dev в демо-режиме.
4. Четыре способа подключиться
| A · Весь кит | B · HTTP-поставщик | C · SDK | D · Контракт | |
|---|---|---|---|---|
| У вас есть | аккаунт eSIM Access, Airalo или eSIM Go | система выдачи, любой язык | платформа на Node.js | свой API для агентов |
| Вы делаете | ничего | 5 эндпоинтов | объект поставщика | 3 эндпоинта esim.*@v1 |
| Кит запускает | всё | всё, кроме поставок | внутри вашего сервиса | проверку соответствия |
| Платежи для людей | 10 сетей | 10 сетей | ваши | ваши |
| До первого предложения | час | день | день | несколько дней |
flowchart TB
subgraph A["A · весь кит"]
A1["Caddy"] --> A2["store"] & A3["rails"] & A4["node"]
A2 & A3 --> A5["eSIM Access"]
end
subgraph B["B · HTTP-поставщик"]
B1["Caddy"] --> B2["store (по желанию)"] & B3["rails"] & B4["node"]
B2 & B3 -->|"подписанный HTTP"| B5["Ваша система<br/>/catalog /orders /profiles /balance"]
end
subgraph C["C · SDK"]
C1["Ваш сервис"] --> C2["createNode()"]
C2 --> C3["ваш объект поставщика"]
end
subgraph D["D · контракт"]
D1["Ваш API для агентов<br/>любой язык"] --> D2["esim-rails check"]
end
Затем любой путь анонсирует себя хабу одинаково (см. гайд оператора, раздел 9): сгенерируйте node.toml, запустите aimarket node, выполните aimarket doctor, затем aimarket node knock.
5. Как взаимодействуют части
5.1 Заказ агента от начала до конца
sequenceDiagram
autonumber
participant Ag as Агент
participant N as Узел продавца
participant F as Фасилитатор x402
participant S as Поставщик
participant CRM as Ваши системы
Ag->>N: POST /order {offer_id}
N-->>Ag: 402 + PAYMENT-REQUIRED (exact, USDC, eip155:8453, цена, payTo)
Ag->>N: POST /order + PAYMENT-SIGNATURE
N->>F: проверить авторизацию
N->>S: заказ {transaction_id = hash(плательщик, nonce), план, себестоимость}
S-->>N: order_ref
loop пока профиль не готов (≤ 45 с)
N->>S: profiles {order_ref}
end
N->>F: провести
F-->>N: проведено (USDC на вашем кошельке)
N-->>Ag: 200, выдача
N-)CRM: agent_order.delivered (подписанный вебхук)
Если профиль не готов за 45 секунд, агент получает 503 allocation_pending, и ничего не проводится; тот же платёж, отправленный снова, находит тот же заказ. Если провести платёж не удалось, узел отменяет профиль и отправляет agent_order.cancelled.
5.2 Заказ на витрине
stateDiagram-v2 [*] --> awaiting_payment: заказ создан (цена держится 20 мин) awaiting_payment --> delivered: платёж найден, eSIM куплена awaiting_payment --> refund_due: оплачено, поставщик отказал awaiting_payment --> underpaid: меньше цены awaiting_payment --> expired: за 24 ч ничего delivered --> [*] refund_due --> [*]: вы возвращаете деньги underpaid --> [*]: вы возвращаете или доводите expired --> [*]
Каждая смена статуса — вебхук order.<status> в ваши системы.
5.3 Куда идут деньги
flowchart LR P["Путешественник"] -->|"USDT · USDC · TON<br/>10 сетей"| W["Ваши кошельки"] AG["Агент"] -->|"USDC в Base, x402"| W W -->|"вы пополняете"| SUP["Баланс у поставщика"] SUP -->|"себестоимость eSIM"| K["профили"] HUB["Хаб AIMarket"] -.->|"ни денег, ни комиссии"| W
5.4 Кто что видит
| Сторона | Видит | Никогда не видит |
|---|---|---|
| Хаб AIMarket | ваш манифест, предложения, которые передаёт, их подписи | платежи, коды активации, вашу себестоимость |
| Агент | предложения, цены, свою выдачу | вашу себестоимость, других покупателей |
| Поставщик (eSIM Access или ваш) | заказы с номером транзакции, выведенным из платежа | покупателя, платёж |
| Ваши системы (вебхуки) | заказ, цену, себестоимость, способ, ссылку на платёж, адрес плательщика, id профиля | код активации, токен заказа |
| Диск кита | заказы без кодов активации, хеш каждого токена заказа | коды активации, приватные ключи |
6. Подключение ваших систем
| Ваша система | Через что подключается | Что передаётся |
|---|---|---|
| Поставки eSIM, SM-DP+, склад профилей | HTTP-поставщик (SUPPLIER=http) | внутрь — планы и себестоимость; наружу — заказы, профили, отмены |
| CRM, хелпдеск | вебхуки (WEBHOOK_URL) | каждый заказ и его статус |
| Биллинг, учёт, ERP | вебхуки | цена, себестоимость, способ, ссылка на платёж |
| Ваша витрина или приложение | API узла продавца | предложения и заказы, как у любого агента |
| Цены | MARGIN_PCT, MIN_MARGIN_USD или cost_usd каждого плана из вашей системы | ваша цена = себестоимость + наценка |
Все эндпоинты, тела запросов и подписи с кодом — в справочнике SDK.
7. Чек-лист онбординга для действующего оператора
- Прочитайте гайд для агентов, чтобы увидеть, что будут вызывать агенты.
- Выберите путь (раздел 4). Для B реализуйте пять эндпоинтов; образец —
rails/examples/operator-backend.mjs. - Запустите кит с
DEMO_MODE=1и вашим поставщиком; проверьте, что каталог загрузился (/agents/healthz). - Направьте
WEBHOOK_URLна тестовый эндпоинт вашей CRM; сделайте один тестовый заказ (гайд оператора, раздел 10). - Запускайте
esim-rails check https://<ваш домен>/agents --country <страна, которую вы продаёте>, пока каждая строка не станет ✓. - Запустите узел федерации и анонсируйте его хабу. Найдите себя через
market_search. - Поставьте
DEMO_MODE=0. Вы продаёте агентам.
8. Вопросы
Берут ли хабы комиссию? Не с прямых продаж: агент платит вашему узлу по x402.
Можно оставить свою витрину и свои цены? Да. Путь B или C, витрина кита выключена — или включена с вашей наценкой.
Какие агенты могут покупать? Любой клиент, который говорит на x402 v2 с USDC в Base, и любой MCP-клиент, подключённый к хабу AIMarket для поиска.
А если хаб недоступен? Ваш узел продолжает продавать агентам, которые знают его адрес; поиск вернётся, когда вернётся хаб.
Можно продавать посуточные пакеты или пополнения? Не в v1: esim.*@v1 продаёт фиксированные планы с заданным объёмом и сроком.
Нужна ли компания? Продавец — вы: ваши условия, ваши возвраты, ваши налоги. См. гайд оператора, раздел 13.