Визиты, заявки, звонки
Списки записей в ответе агента: карточки визитов, список заявок, карточки звонков.
Визиты
Живой код — редактируйте
const sessionsData = { period: { from: "2026-10-13", to: "2026-10-19", days: 7 }, caveats: [], total: 3, items: [ { id: "session-1", at: "2026-10-19T09:14:00Z", source: "Яндекс Директ", campaign: "Поиск · Москва", device: "mobile", landingPath: "/ceny", activeSeconds: 184, wallSeconds: 260, hasReplay: true, outcome: "submitted", submissionId: "submission-1", lastField: null }, { id: "session-2", at: "2026-10-19T11:02:00Z", source: "Органика", campaign: null, device: "desktop", landingPath: "/", activeSeconds: 96, wallSeconds: 140, hasReplay: true, outcome: "abandoned", submissionId: null, lastField: "Телефон" }, { id: "session-3", at: "2026-10-18T17:40:00Z", source: "Соцсети", campaign: null, device: "mobile", landingPath: "/otzyvy", activeSeconds: 32, wallSeconds: 40, hasReplay: false, outcome: "browsed", submissionId: null, lastField: null } ] }; render( <SessionCards data={sessionsData} /> );
Заявки
Живой код — редактируйте
const submissionsData = { period: { from: "2026-10-13", to: "2026-10-19", days: 7 }, caveats: [], total: 3, items: [ { id: "submission-1", at: "2026-10-19T09:18:00Z", status: "analyzed", source: "Яндекс Директ", campaign: "Поиск · Москва", score: 82, aiLevel: "high", managerLevel: null, sessionDbId: "session-1", pagePath: "/ceny", reasons: ["Долго изучал цены", "Вернулся на сайт"] }, { id: "submission-2", at: "2026-10-18T14:05:00Z", status: "analyzed", source: "Органика", campaign: null, score: 47, aiLevel: "medium", managerLevel: "medium", sessionDbId: "session-4", pagePath: "/" }, { id: "submission-3", at: "2026-10-17T21:47:00Z", status: "analyzed", source: null, campaign: null, score: 12, aiLevel: "low", managerLevel: null, sessionDbId: "session-5", reasons: ["Форма заполнена за 2 секунды"] } ] }; render( <SubmissionList data={submissionsData} /> );
Звонки
Живой код — редактируйте
const callsData = { period: { from: "2026-10-13", to: "2026-10-19", days: 7 }, caveats: [], total: 2, items: [ { id: "call-1", at: "2026-10-19T10:30:00Z", source: "Яндекс Директ", outcome: "answered", durationS: 312, matched: true, aiLevel: "high", intent: "Хочет рассчитать стоимость под ключ" }, { id: "call-2", at: "2026-10-18T16:12:00Z", source: null, outcome: "missed", durationS: 0, matched: false, aiLevel: null } ] }; render( <CallCards data={callsData} /> );
Со ссылками и записью визита
В приложении AnalyticsLinksProvider подставляет ссылки на заявки и звонки и диалог записи. Здесь — заглушки:
Живой код — редактируйте
const sessionsData = { period: { from: "2026-10-13", to: "2026-10-19", days: 7 }, caveats: [], total: 3, items: [ { id: "session-1", at: "2026-10-19T09:14:00Z", source: "Яндекс Директ", campaign: "Поиск · Москва", device: "mobile", landingPath: "/ceny", activeSeconds: 184, wallSeconds: 260, hasReplay: true, outcome: "submitted", submissionId: "submission-1", lastField: null }, { id: "session-2", at: "2026-10-19T11:02:00Z", source: "Органика", campaign: null, device: "desktop", landingPath: "/", activeSeconds: 96, wallSeconds: 140, hasReplay: true, outcome: "abandoned", submissionId: null, lastField: "Телефон" }, { id: "session-3", at: "2026-10-18T17:40:00Z", source: "Соцсети", campaign: null, device: "mobile", landingPath: "/otzyvy", activeSeconds: 32, wallSeconds: 40, hasReplay: false, outcome: "browsed", submissionId: null, lastField: null } ] }; function ReplayStub({ open, onOpenChange, name }) { return ( <ConfirmDialog open={open} onOpenChange={onOpenChange} title={name} description="Здесь откроется плеер записи визита" confirmText="Закрыть" onConfirm={() => onOpenChange(false)} /> ); } render( <AnalyticsLinksProvider value={{ submissionHref: (id) => '#' + id, callHref: (id) => '#' + id, ReplayDialog: ReplayStub }} > <SessionCards data={sessionsData} /> </AnalyticsLinksProvider> );