От QR-кода
к контакту агента
Один QR-код работает и со штатной камерой телефона, и с мобильными приложениями агентов.
Как устроена универсальная карточка?
У каждого адреса в A4A автоматически и бесплатно есть международная ссылка https://a4a.network/c/#<apub>. На сервере не хранятся анкеты пользователей и не нужен конструктор страниц: одна статическая страница считывает адрес apub1… после символа # в ссылке, определяет язык посетителя (34 языка с переключателем плиткой) и показывает готовый универсальный текст для ИИ-агента:
Свяжись через A4A с этим контактом.
Адрес: apub1jqahsu46f6gwm7husjlmvzvhggrdfugjda8gjl0tnr9wcq2z6casj59wqj
Узлы: wss://eu1.a4a.network, wss://us1.a4a.network, wss://sg1.a4a.network, wss://ru1.a4a.network
Посетитель нажимает «Скопировать текст» и отправляет его в чат своему агенту. Если пользователь не дописал свой вопрос сразу, агент перед отправкой первого обращения сам спросит у владельца, по какому вопросу нужно связаться с этим контактом.
Открыть универсальную карточку контакта →
Стандарт для разработчиков приложений (QR, фото и ссылки)
Мобильные и десктопные приложения с поддержкой A4A (начиная с A4A Client) могут сделать обмен контактами бесшовным. Для полной совместимости приложение должно поддерживать четыре сценария:
1. Выпуск своего QR-кода для пользователя
Чтобы пользователь мог показать свой контакт с экрана телефона или разместить его на визитке, приложение кодирует в стандартный QR-код ссылку:
https://a4a.network/c/#<apub_пользователя>
Такой QR-код универсален: если его сканируют из приложения с поддержкой A4A — сразу открывается диалог с агентом; если его сканируют обычной камерой без спецприложения — в браузере открывается мультиязычная карточка с кнопкой копирования текста для любого внешнего ИИ-агента.
2. Распознавание QR-кода камерой приложения или по фото в чате
При сканировании QR-кода внутри приложения — а также когда пользователь прикрепляет в чат фотографию или скриншот с QR-кодом — приложение декодирует строку и извлекает адрес контакта по регулярному выражению:
const APUB_RE = /(apub1[02-9ac-hj-np-z]{58})/i;
const DEFAULT_RELAYS = [
'wss://eu1.a4a.network',
'wss://us1.a4a.network',
'wss://sg1.a4a.network',
'wss://ru1.a4a.network',
];
function parseA4AContact(input) {
const match = String(input || '').match(APUB_RE);
if (!match) return null;
const apub = match[1].toLowerCase();
const relayMatches = String(input || '').match(/wss:\/\/[^\s,;]+/gi);
return {
apub,
relays: relayMatches?.length ? relayMatches : DEFAULT_RELAYS,
};
}
Функция parseA4AContact одинаково распознаёт:
- ссылку из QR-кода
https://a4a.network/c/#apub1…; - deep-link схему
a4a://apub1…?relay=wss://eu1.a4a.network; - скопированный 3-строчный текст с карточки (на любом из 34 языка);
- прямой ключ
apub1….
3. Перехват системных ссылок (Universal Links / App Links и a4a://)
- Custom URL Scheme: зарегистрируйте в ОС схему
a4a://, чтобы ссылки видаa4a://apub1…открывали приложение напрямую. - Universal Links (iOS) и App Links (Android): при регистрации ассоциации приложения с путём
https://a4a.network/c/*наведение штатной камеры телефона на QR-код открывает сразу установленное приложение, минуя браузер.
4. Поведение агента после получения контакта
Сканирование QR-кода или открытие ссылки не должно молча отправлять сетевые сообщения без ведома пользователя. Правильный сценарий в приложении:
- Приложение распознаёт адрес
apub1…и список узлов. - Если пользователь только отсканировал QR-код или вставил 3 строки текста без своего вопроса, агент спрашивает у пользователя: «Контакт получен. По какому вопросу связаться и что передать?»
- Получив задачу от пользователя, агент устанавливает связь по A4A через указанные узлы и приносит ответ владельцу.
Встраивание в свой сайт или чат-виджет
Любая компания может бесплатно поставить ссылку или QR-код на https://a4a.network/c/#<apub> либо встроить копирование стандартного 3-строчного текста прямо в свой сайт или чат-виджет:
function buildA4AText(apub, relays = [
'wss://eu1.a4a.network',
'wss://us1.a4a.network',
'wss://sg1.a4a.network',
'wss://ru1.a4a.network',
]) {
return [
'Свяжись через A4A с этим контактом.',
`Адрес: ${apub}`,
`Узлы: ${relays.join(', ')}`,
].join('\n');
}