This is a development version of the documentation. Content may change without notice.
Voke Documentation
Partner API

AMQP autentizace (CZ)

Vytvořte API klíč se scopem vcp:connect a přijímejte telemetrii z amqp.voke.turena.cz přes AMQPS.

Připojte se přes AMQPS na amqp.voke.turena.cz:5671 s vaším slugem organizace jako uživatelským jménem a vaším plaintext API klíčem jako heslem. Broker vám posílá telemetrii, alarmy a status události; vy zpět přes stejné spojení publikujete příkazy, rozvrhy (schedules) a konfiguraci.

REST protějšek (stejný průvodce, jiný scope) najdete v REST autentizaci.

Jak je spojení tvarováno

Jedno AMQPS URI nese vše, co broker potřebuje. Přečtěte si ho jednou a zbytek průvodce dává smysl:

amqps://<org-slug>:<api-key>@amqp.voke.turena.cz:5671/partner-<key-id>
        └─ username ─┘ └─ password ─┘  └─── host:port ───┘  └── vhost ──┘
  • <org-slug> — slug vaší organizace, ten samý, který je ve vaší workspace URL (voke.turena.cz/orgs/<slug>/…).
  • <api-key> — plaintext klíč, který si vytvoříte v průvodci níže. Zobrazí se přesně jednou na obrazovce s odhalením.
  • amqp.voke.turena.cz:5671 — veřejný AMQPS endpoint Voke. Vždy TLS, nikdy plain AMQP.
  • partner-<key-id> — dedikovaný vhost vyhrazený per klíč, takže vaše fronty nikdy nekolidují s frontami jiných partnerů. Key ID je neprůhledný identifikátor vedle API klíče na obrazovce s odhalením.

Po připojení konzumujete ze tří event front (telemetry, alarm, status) a publikujete do tří command front (command, schedule, config). Kompletní seznam front je na detailní stránce API klíče po jeho vytvoření.

Předpoklady

  • Účet s rolí ORG_ADMIN v cílové organizaci.
  • AMQP 0-9-1 klientská knihovna — amqplib (Node), pika nebo aio-pika (Python), RabbitMQ.Client (.NET).
  • Služba se stabilní výstupní (egress) IP. Průvodce vyžaduje CIDR allowlist u každého presetu, který uděluje AMQP.

Krok 1 — Otevřete stránku Connections

Přihlaste se na https://voke.turena.cz, zvolte správnou organizaci a otevřete Workspace settings → Connections (/orgs/<orgId>/settings/connections).

Connections Overview tab with the Connect partner button highlighted

Klikněte na + Connect partner pro otevření průvodce.

Krok 2 — Zvolte preset, který obsahuje vcp:connect

vcp:connect je scope pro AMQP autentizaci. Jakýkoli preset, který ho obsahuje, uděluje přístup k brokeru — vyberte ten, který odpovídá tomu, co integrujete.

Connect partner wizard, Use case step with five preset radios

PresetNejlepší proAMQP přístup
Trading platform partnerPlná ESM integrace: odesílání příkazů, příjem telemetrie, publikování rozvrhů a režimů.Ano (vcp:connect + všechny vcp:write:*)
Telemetry consumer (read-only)Analytické nebo monitorovací služby, které přijímají živé telemetry, alarm a status streamy.Ano (vcp:connect + vcp:read)
HTTP read-onlyDashboardy a reporty, které potřebují jen REST.Ne
Internal toolInterní skripty proti admin REST endpointům.Ne
CustomVyberte scopy ručně.Pokud zaškrtnete vcp:connect

Krok 3 — Potvrďte, že je vcp:connect zaškrtnutý

vcp:connect je scope, který broker kontroluje při každém AMQP handshake. Bez něj je spojení odmítnuto dříve, než se vyhodnotí jakýkoli přístup k frontám. Presety Trading platform partner a Telemetry consumer ho předzaškrtnou; u Custom ho zaškrtněte ručně. Jakékoli vcp:write:* scopy, které také zaškrtnete, umožní klíči publikovat na odpovídajících routing keys.

Permissions step with vcp:connect and vcp:read pre-checked by the Telemetry consumer preset

ScopeCo uděluje přes AMQP
vcp:connectOtevření spojení s brokerem. Vyžadováno pro každou AMQP integraci.
vcp:readKonzumace z výstupních event front (telemetry, alarm, status).
vcp:write:setpointPublikování zpráv {slug}.command.site-setpoint.
vcp:write:device-commandPublikování zpráv {slug}.command.device.*.
vcp:write:schedulePublikování zpráv {slug}.schedule.*.
vcp:write:modePublikování zpráv {slug}.command.mode.
vcp:write:configPublikování zpráv {slug}.config.*.

Krok 4 — Pojmenujte klíč, přidejte IP allowlist, vygenerujte

Dejte klíči název, který později poznáte, a partner ID. Klíče nesoucí AMQP vyžadují alespoň jeden CIDR v allowlistu — broker odmítne spojení z jakékoli jiné adresy. Přidejte CIDR a klikněte na Generate.

Connect partner wizard, Network step with name and partner ID filled in

Server před přesměrováním spustí self-test brokeru proti čerstvě vytvořeným credentials; pokud sonda selže, volání vrátí 500 a žádný bundle se nezobrazí. Úspěšné vytvoření vás přivede na detailní stránku API klíče s odhalovacím bannerem nahoře.

Krok 5 — Zkopírujte bundle

Obrazovka s odhalením zobrazuje čtyři hodnoty. Než obrazovku opustíte, zkopírujte je všechny do svého secret manageru.

Reveal screen showing Key ID, API key, HMAC signing key, and ready-to-paste AMQPS URI

  • Key ID — neprůhledný identifikátor, který můžete uvádět v support ticketech, aniž byste vyzradili secret.
  • API key — plaintext secret. Slouží zároveň jako AMQP heslo i jako REST hlavička X-API-Key.
  • HMAC signing key — přítomen pouze tehdy, když klíč nese scope vcp:write:*. Používá se k podpisu vysoce rizikových příkazů (viz Integrita VCP zpráv).
  • AMQPS URIamqps://<org-slug>:<api-key>@amqp.voke.turena.cz:5671/partner-<key-id>. Vložte přímo do jakéhokoli AMQP klienta, který přijímá connection string.

Bundle se zobrazí přesně jednou. Pokud ho ztratíte, vytvořte nový klíč se stejnými scopy a starý zneplatněte (revoke).

Krok 6 — Připojte se z vašeho klienta

Jakmile kliknete na I've saved these, detailní stránka nahradí secrety jednotlivými připojovacími hodnotami, které můžete přímo vložit do konfigurace vašeho AMQP klienta.

API key detail page showing the RabbitMQ connection card with host, port, username, vhost, REST base URL, and the six queue names

// Node.js — consume telemetry
import * as amqp from 'amqplib';

const URL = process.env.VOKE_AMQPS_URI!; // amqps://<org-slug>:<api-key>@amqp.voke.turena.cz:5671/partner-<key-id>

const conn = await amqp.connect(URL);
const ch = await conn.createChannel();

await ch.consume('vcp.<org-slug>.event.telemetry', (msg) => {
  if (!msg) return;
  const envelope = JSON.parse(msg.content.toString('utf8'));
  console.log(envelope);
  ch.ack(msg);
});
# Python — consume telemetry
import asyncio, os
import aio_pika

async def main():
    conn = await aio_pika.connect_robust(os.environ["VOKE_AMQPS_URI"])
    ch = await conn.channel()
    queue = await ch.get_queue("vcp.<org-slug>.event.telemetry")
    async with queue.iterator() as it:
        async for msg in it:
            async with msg.process():
                print(msg.body.decode("utf-8"))

asyncio.run(main())

Názvy front v přehledu

Broker vám posílá události; vy publikujete příkazy do něj.

QueueSměrRodina routing keys
vcp.<slug>.event.telemetrybroker → vy<slug>.event.telemetry.realtime.<siteId>, <slug>.event.telemetry.meter.<siteId>
vcp.<slug>.event.alarmbroker → vy<slug>.event.alarm.raised
vcp.<slug>.event.statusbroker → vy<slug>.event.command.ack (command acks)
vcp.<slug>.commandvy → broker<slug>.command.site-setpoint, <slug>.command.device.*, <slug>.command.mode, <slug>.command.emergency
vcp.<slug>.schedulevy → broker<slug>.schedule.create, <slug>.schedule.cancel
vcp.<slug>.configvy → broker<slug>.config.*

Chyby

SymptomPravděpodobná příčinaŘešení
ACCESS_REFUSED ... PLAIN při připojeníAPI klíč zneplatněn, vypršel nebo je neznámý; nebo uživatelské jméno není slug vaší organizace.Vytvořte nový klíč. Uživatelské jméno MUSÍ být slug organizace, ne key ID.
ACCESS_REFUSED ... vhost při připojeníCesta k vhostu chybí nebo je špatná.Vhost je partner-<key-id> — zahrňte úvodní lomítko a URL-enkódujte, pokud to váš klient vyžaduje.
Spojení přijato, poté ihned uzavřenoIP volajícího není v allowlistu.Přidejte výstupní (egress) CIDR na detailní stránce pod Allowed IPs, nebo vytvořte nový klíč se správným CIDR.
not authorized při publikováníChybějící scope vcp:write:* pro rodinu routing keys, kterou jste se pokusili použít.Vytvořte klíč znovu s odpovídajícím write scopem, nebo použijte správný routing key pro scope, který máte.

Další kroky

On this page