Your AI Connector Docs

Entry Points API

Et Entry Point (indgangspunkt) er en ruteregel: “når dette sker på denne kanal, så giv samtalen videre til denne Agent”. At forbinde en kanal får beskeder ind på kontoen, og at oprette en Agent giver dig noget, der kan svare, men ingen af delene afgør, hvem der besvarer en fremmeds første besked. Det gør Entry Points. For selve produktet, se Entry Points-guiden.

Alle eksempler herunder viser ?apiKey= forespørgselsformen i cURL og X-API-Key headeren i JavaScript og Python — begge virker på alle slutpunkter.

I API-udforskeren. Hvert endpoint på denne side findes i den publicerede OpenAPI-specifikation, så du kan gennemse dens præcise felter og køre live-forespørgsler i API-udforskeren.


Det ene kald, som de fleste integrationer har brug for

Forbind en kanal, opret en Agent, og peg derefter kanalen mod Agenten:

curl -X PUT "https://api.youraiconnector.com/v1/entry-points/channel-defaults?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "channel": "whatsapp", "agent_id": "ag7HkQ2ZpLxR3mNb" }'

Det er hele opsætningen for “denne Agent besvarer WhatsApp”. Alt andet på denne side er til mere specifikke regler (nøgleord, kommentarer, nye følgere), flere numre på én kanal og læsning af, hvad der er konfigureret.


Hvordan ruting besluttes

Når en besked ankommer, gennemgår platformen en fast stige, og det første trin, der træffer en beslutning, vinder:

  1. Et menneske har overtaget samtalen — ingen AI.
  2. Kontakten er allerede tildelt en Agent, manuelt eller fordi en samtale med denne Agent er i gang — den samme Agent beholder den. Entry Points flytter aldrig en eksisterende samtale; for at give en chat videre til en anden Agent, skal du tildele den (i appen eller med Automations-handlingen).
  3. Kontakten svarer på en udsendelse — udsendelsens Agent svarer, eller ingen, hvis udsendelsen ikke havde nogen.
  4. Et snævert Entry Point matcher. Nøgleordsregler slår kommentarregler, som slår følgerregler. Mellem to regler af samme type vinder den, der sidst er blevet opdateret.
  5. Kanalens standard for den kanal, beskeden ankom på. En standard, der er begrænset til det specifikke nummer, kontakten skrev til, slår kanalens overordnede standard.
  6. Intet matchede — beskeden lander i indbakken til dit team, og ingen assistent svarer.

To ting blødgør trin 6. En konto med præcis én aktiv Agent og ingen standard konfigureret for kanalen får stadig denne Agent som svarer, så en ny konto, der forbinder WhatsApp og sender en testbesked, oplever ikke tavshed. Dette gulv gælder aldrig for en kanal, der har en nøgleordsregel (her efterlades en besked, der ikke matcher noget nøgleord, bevidst til et menneske) og tilsidesætter aldrig en kanal, du har sat til ingen (se Lad en kanal stå uden svar).

Hvorvidt stigen er aktiv for en konto, rapporteres af GET /entry-points/routing-status. Den er tændt for alle konti i dag; kaldet findes, så en integration kan tjekke i stedet for at antage.


Entry Point-objektet

{
  "id": "ep3KmQ8vTzXr5nWd",
  "type": "keyword",
  "channels": ["whatsapp", "instagram"],
  "agent_id": "ag7HkQ2ZpLxR3mNb",
  "enabled": true,
  "match_config": {
    "keywords": ["pricing", "quote"]
  },
  "first_response_mode": null,
  "first_response_exact_text": null,
  "public_comment_reply_exact_text": null,
  "created_at": 1700000000000,
  "last_modified_at": 1700000000000
}
Felt Beskrivelse
id Regelens ID.
type En af channel_default, keyword, instagram_comment, facebook_comment, instagram_follower. Se Regeltyper.
channels De kanaler, reglen dækker: whatsapp, whatsapp_web, instagram, instagram_private, messenger, telegram, sms, email, chat_widget, custom_channel, line, viber, tiktok, imessage, linkedin, skool. Kommentarregler bruger instagram eller facebook.
agent_id Den Agent, reglen ruter til. Tom ved en kanalstandard, der bevidst er sat til ingen.
enabled false for en regel, der er blevet pensioneret. Pensionerede regler er historik, ikke aktive indstillinger, og begge returneres fra liste-slutpunkterne.
match_config Typespecifikke indstillinger — se Regeltyper. Tom for en almindelig kanalstandard.
first_response_mode ai (standard) lader Agenten skrive det første svar; exact_text sender first_response_exact_text ordret. Respekteres på kommentarregler i dag; accepteres og gemmes på nøgleordsregler, men bruges endnu ikke der.
first_response_exact_text Den faste første DM, når first_response_mode er exact_text. {{first_name}} erstattes med personens fornavn eller “derude”, når det er ukendt.
public_comment_reply_exact_text Kun kommentarregler: det faste offentlige svar under kommentaren. Tom springer det offentlige svar over; DM’en sendes stadig.
created_at, last_modified_at Epoch-millisekunder.

Regeltyper

type Udløses når match_config
channel_default En ny, ukendt kontakt skriver ind på en af channels. phone_numbers (valgfri) — begræns standarden til ét forbundet nummer i stedet for hele kanalen. Se Én Agent pr. WhatsApp-nummer.
keyword En ny kontakts første besked er en af keywords. Matchning ignorerer store/små bogstaver og mellemrum, og en nær-miss (“info tak” mod INFO) løses stadig af AI, medmindre du sætter fuzzy_match: false — gør det for kampagnekoder og SKU’er, hvor en nær-miss ikke må tælle. Anvendes ikke på sms eller imessage. keywords (mindst én, påkrævet), fuzzy_match (standard true).
instagram_comment / facebook_comment Nogen kommenterer på et af dine opslag. channels skal inkludere henholdsvis instagram eller facebook. keywords (tom betyder, at enhver kommentar på de overvågede opslag tæller), post_ids (tom betyder alle opslag), delay_minutes (vent før DM’en sendes), reply_instructions (hvordan Agenten skal formulere sit svar).
instagram_follower Nogen følger din Instagram-konto. Kræver Instagram (Personlig)-forbindelsen — den officielle Instagram DM-forbindelse kan ikke se følgere. reply_instructions (valgfri).

En nøgleordsregel på en kanal uden en kanalstandard fungerer også som en port: beskeder, der ikke matcher nogen af nøgleordene, får ikke noget automatisk svar og lander blot i din indbakke, selv på en konto med en enkelt agent.


Tildel en kanal til en agent

PUT /entry-points/channel-defaults — gør én agent til besvarer for nye kontakter på en kanal. Enhver anden agent, der i øjeblikket er indstillet som kanalens standard, trækkes tilbage i samme kald, så en kanal altid har præcis én besvarer. Hvis du indstiller den agent, der allerede er standard, ændres intet.

Felt Påkrævet Beskrivelse
channel Ja Kanalen, for eksempel whatsapp, whatsapp_web, instagram, messenger, telegram, sms, email, chat_widget eller custom_channel.
agent_id Ja Den agent, der skal svare. Skal tilhøre din konto.
phone_number Nej Begræns standarden til et af dine tilsluttede numre på denne kanal (E.164 med det foranstillede +, præcis som det vises under tilsluttede numre). Efterlader kanalens overordnede standard uberørt. Se Én agent pr. WhatsApp-nummer.

cURL

curl -X PUT "https://api.youraiconnector.com/v1/entry-points/channel-defaults?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "channel": "instagram", "agent_id": "ag7HkQ2ZpLxR3mNb" }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/entry-points/channel-defaults", {
  method: "PUT",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ channel: "instagram", agent_id: "ag7HkQ2ZpLxR3mNb" }),
});
const data = await res.json();

Python

import requests

res = requests.put(
    "https://api.youraiconnector.com/v1/entry-points/channel-defaults",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"channel": "instagram", "agent_id": "ag7HkQ2ZpLxR3mNb"},
)
data = res.json()

Svar

{
  "success": true,
  "entry_point_id": "ep3KmQ8vTzXr5nWd",
  "disabled_entry_point_ids": ["epPrevious1234"]
}

entry_point_id er reglen, der nu er gældende; disabled_entry_point_ids viser alle regler, der er trukket tilbage for at gøre plads til den (tom, når der ikke var noget at erstatte). Kun kontakter, du aldrig har talt med, bliver påvirket — alle, der allerede er i en samtale med en agent, beholder denne agent.

En 400 betyder, at channel eller agent_id mangler, agenten tilhører en anden konto, eller phone_number ikke er et af dine tilsluttede numre.


Se, hvem der besvarer hver kanal

GET /entry-points/channel-defaults — hver kanalstandard på kontoen, nyeste først, inklusive tilbagetrukne (enabled: false) og en kanal, der bevidst er indstillet til ingen (agent_id: ""). Filtrer på enabled for at få det aktuelle overblik.

cURL

curl "https://api.youraiconnector.com/v1/entry-points/channel-defaults?apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/entry-points/channel-defaults", {
  headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();

Python

import requests

res = requests.get(
    "https://api.youraiconnector.com/v1/entry-points/channel-defaults",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()

Svar

{
  "success": true,
  "entry_points": [
    {
      "id": "ep3KmQ8vTzXr5nWd",
      "type": "channel_default",
      "channels": ["whatsapp"],
      "agent_id": "ag7HkQ2ZpLxR3mNb",
      "enabled": true,
      "match_config": {},
      "created_at": 1700000000000,
      "last_modified_at": 1700000000000
    },
    {
      "id": "epAEnhHoozpoGVze",
      "type": "channel_default",
      "channels": ["whatsapp"],
      "agent_id": "agRotterdamBranch",
      "enabled": true,
      "match_config": { "phone_numbers": ["+31685101091"] },
      "created_at": 1700000000000,
      "last_modified_at": 1700000000000
    }
  ]
}

Dette er læsningen for hele kontoen. At liste én agents regler med GET /agents/{agentId}/entry-points kan ikke vise en kanal, der er indstillet til ingen, fordi den regel ikke tilhører nogen agent.


Efterlad en kanal uden besvarer

DELETE /entry-points/channel-defaults?channel=instagram — trækker kanalens overordnede standard tilbage for én kanal. Kanalen navngives som en forespørgselsparameter, ikke i en brødtekst. Tilføj &phone_number=%2B31685101091 for kun at rydde det nummers standard og lade nummeret gå tilbage til den, der besvarer kanalen.

cURL

curl -X DELETE "https://api.youraiconnector.com/v1/entry-points/channel-defaults?channel=instagram&apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/entry-points/channel-defaults?channel=instagram",
  { method: "DELETE", headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();

Python

import requests

res = requests.delete(
    "https://api.youraiconnector.com/v1/entry-points/channel-defaults",
    params={"channel": "instagram"},
    headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()

Svar

{ "success": true, "disabled_entry_point_ids": ["ep3KmQ8vTzXr5nWd"] }

Sikkert at gentage: rydning af en kanal, der ikke har nogen standard, er en 200 med en tom liste. Rydning betyder fjern indstilling, ikke tavshed — på en konto med præcis én aktiv agent falder en ukonfigureret kanal stadig tilbage på den agent. For at holde AI’en helt væk fra en kanal, skal du vælge Ingen besvarer for den i appens panel Hvem besvarer nye samtaler (det skriver en eksplicit “ingen”-standard, som fallback-funktionen aldrig tilsidesætter), eller sæt agenten på pause med PATCH /agents/{agentId}/active.


Én agent pr. WhatsApp-nummer

Routing er som standard pr. kanal: alle dine WhatsApp-numre deler én besvarer. Med to eller flere numre tilsluttet på WhatsApp Business eller WhatsApp Web kan en standard begrænses til et enkelt nummer, så en virksomhed med et nummer pr. afdeling eller brand kan give hver sin egen agent inden for én konto.

Send phone_number med set-kaldet:

curl -X PUT "https://api.youraiconnector.com/v1/entry-points/channel-defaults?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "whatsapp_web",
    "agent_id": "agRotterdamBranch",
    "phone_number": "+31685101091"
  }'
  • Nummeret skal være et af dine tilknyttede numre på den kanal, skrevet som det vises under tilknyttede numre (E.164 med +); alt andet er en 400.
  • Reglen gemmes som en kanalstandard med match_config.phone_numbers: ["+31685101091"]. En besked, der ankommer til det nummer, går til dets agent; alle andre numre fortsætter med at følge kanalens standard.
  • Indstilling eller sletning af kanalens standard påvirker ikke nummer-specifikke regler, og omvendt. Slet et nummers egen regel med DELETE /entry-points/channel-defaults?channel=whatsapp_web&phone_number=%2B31685101091.
  • Svar sendes altid fra det nummer, som kontakten skrev til, så kontakten bliver ved med at tale med det samme nummer og den samme agent.

Tilføj en mere specifik regel

POST /agents/{agentId}/entry-points — opretter en regel for nøgleord, kommentarer eller følgere (eller en kanalstandard, selvom PUT /entry-points/channel-defaults er det bedre valg til det, da den automatisk pensionerer den tidligere svarer for dig). Agenten i stien vinder altid: en regel kan aldrig oprettes for en anden agent end den, der er angivet i URL’en.

Felt Påkrævet Beskrivelse
type Ja keyword, instagram_comment, facebook_comment, instagram_follower eller channel_default.
channels Ja En ikke-tom liste over de kanaler, reglen dækker. En kommentarregel skal angive sin egen kanal (instagram eller facebook).
match_config Afhænger af type Se Regeltyper. En nøgleordsregel kræver mindst én post i keywords.
enabled Nej Standard er true.
first_response_mode, first_response_exact_text, public_comment_reply_exact_text Nej Indstillingerne for første svar beskrevet i Entry Point-objektet.

cURL

curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/entry-points?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "keyword",
    "channels": ["whatsapp", "instagram"],
    "match_config": { "keywords": ["pricing", "quote"] }
  }'

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/entry-points",
  {
    method: "POST",
    headers: {
      "X-API-Key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      type: "keyword",
      channels: ["whatsapp", "instagram"],
      match_config: { keywords: ["pricing", "quote"] },
    }),
  }
);
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/entry-points",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "type": "keyword",
        "channels": ["whatsapp", "instagram"],
        "match_config": {"keywords": ["pricing", "quote"]},
    },
)
data = res.json()

Svar (201)

{ "success": true, "entry_point_id": "ep3KmQ8vTzXr5nWd" }

En kommentar-til-DM-regel, der kun reagerer på kommentarer, der skriver “LINK” på to specifikke opslag, venter to minutter og sender en fast første besked:

{
  "type": "instagram_comment",
  "channels": ["instagram"],
  "match_config": {
    "keywords": ["LINK"],
    "post_ids": ["17895695668004550", "17841400008460056"],
    "delay_minutes": 2
  },
  "first_response_mode": "exact_text",
  "first_response_exact_text": "Hi {{first_name}}, here is the link you asked for: https://example.com/guide",
  "public_comment_reply_exact_text": "Sent you a DM!"
}

Lad keywords være tom for at sende DM til alle, der kommenterer på de overvågede opslag, og post_ids være tom for at overvåge alle opslag. En 400 angiver, hvad der er galt: et ukendt type, et tomt channels, en nøgleordsregel uden nøgleord eller en kommentarregel, der ikke angiver sin egen kanal.


Vis en agents regler

GET /agents/{agentId}/entry-points — de regler, der sender samtaler til denne agent, nyeste først: dens kanalstandarder, nøgleordsregler, kommentarregler og følgerregler. Pensionerede regler kommer også tilbage med enabled: false.

cURL

curl "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/entry-points?apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/entry-points",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();

Python

import requests

res = requests.get(
    "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/entry-points",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()

Svar

{
  "success": true,
  "entry_points": [
    {
      "id": "ep3KmQ8vTzXr5nWd",
      "type": "keyword",
      "channels": ["whatsapp", "instagram"],
      "agent_id": "ag7HkQ2ZpLxR3mNb",
      "enabled": true,
      "match_config": { "keywords": ["pricing", "quote"] },
      "created_at": 1700000000000,
      "last_modified_at": 1700000000000
    }
  ]
}

Ændr en regel

PUT /entry-points/{entryPointId} — ændrer én regel. Send kun de felter, du ændrer; indlejrede indstillinger kan adresseres punkt for punkt med en prik-adskilt nøgle såsom "match_config.keywords". Hver gang ændringen berører type, channels eller match_config, bliver hele reglen tjekket igen, så en delvis redigering aldrig kan efterlade en ubrugelig regel (skift af type til keyword uden at angive nøgleord afvises). Ved at sende agent_id gives reglen videre til en anden af dine agenter; en tom værdi afvises. Ejer- og identitetsfelter ignoreres.

cURL

curl -X PUT "https://api.youraiconnector.com/v1/entry-points/ep3KmQ8vTzXr5nWd?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "match_config": { "keywords": ["pricing", "quote", "demo"] } }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/entry-points/ep3KmQ8vTzXr5nWd", {
  method: "PUT",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ match_config: { keywords: ["pricing", "quote", "demo"] } }),
});
const data = await res.json();

Python

import requests

res = requests.put(
    "https://api.youraiconnector.com/v1/entry-points/ep3KmQ8vTzXr5nWd",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"match_config": {"keywords": ["pricing", "quote", "demo"]}},
)
data = res.json()

Svar

{ "success": true, "entry_point_id": "ep3KmQ8vTzXr5nWd" }

Andre almindelige redigeringer: { "enabled": false } pensionerer en regel uden at slette den, og { "agent_id": "agOtherAgent" } flytter den til en anden agent. En tom brødtekst returnerer 400 med "No fields to update".


Slet en regel

DELETE /entry-points/{entryPointId} — fjerner reglen permanent. Intet andet refererer til et Entry Point, så der er intet, der skal løsrives først.

cURL

curl -X DELETE "https://api.youraiconnector.com/v1/entry-points/ep3KmQ8vTzXr5nWd?apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/entry-points/ep3KmQ8vTzXr5nWd", {
  method: "DELETE",
  headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();

Python

import requests

res = requests.delete(
    "https://api.youraiconnector.com/v1/entry-points/ep3KmQ8vTzXr5nWd",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()

Svar

{ "success": true, "entry_point_id": "ep3KmQ8vTzXr5nWd" }

For at stoppe en regel fra at blive aktiveret, men beholde den, skal du i stedet sætte enabled til false. Kanalstandarder bliver normalt pensioneret frem for slettet, hvilket er hvad DELETE /entry-points/channel-defaults gør.


Tjek at routing er aktiv

GET /entry-points/routing-status — returnerer, hvorvidt Entry Points-stigen afgør, hvem der svarer på denne konto. Kan læses med visningsadgang, så et teammedlem ser det samme svar som ejeren.

curl "https://api.youraiconnector.com/v1/entry-points/routing-status?apiKey=YOUR_API_KEY"
{ "success": true, "cutover_enabled": true }

Det er true på alle konti i dag. Kaldet beholdes, så en integration kan verificere, før den fortæller nogen, at deres routing-ændring er live, i stedet for at antage det.


De ældre, kampagneformede kald

To slutpunkter fra før agenter fungerer stadig for konti, der er organiseret omkring kampagner. Nye integrationer bør bruge kanal-standardkaldene ovenfor i stedet.

  • PUT /channel-routing/{channel} med { "campaignId": "cp5NbV8xQrT2wYzA" } — navngiver en kampagne, og den kampagnes agent bliver kanalens svarer. { "campaignId": null } rydder kanalen. En kampagne, der kun er udgående, afvises, fordi den ikke har nogen indgående adfærd at tilbyde.
  • POST /channel-routing/clear med { "channels": ["whatsapp", "instagram"] } — frigør flere kanaler fra den agent, der svarer på dem i ét kald, typisk før de peges et andet sted hen. Svaret viser released_channels, dem der faktisk havde en svarer.

Begge nulstiller snarere end at gøre tavse: på en konto med præcis én aktiv agent falder en frigjort kanal stadig tilbage til den agent.


Entry Points API-fejl

Entry Point-slutpunkter returnerer standardfejlkonvolutten:

{
  "success": false,
  "error": "Entry point not found"
}
Status Hvornår det sker på et Entry Point-slutpunkt
400 Et felt mangler, eller reglen ville være ubrugelig: intet channel eller agent_id ved et set-kald, et ukendt type, et tomt channels, en nøgleordsregel uden nøgleord, en kommentarregel der ikke angiver sin egen kanal, et tomt agent_id ved en opdatering, en tom opdateringskrop eller et phone_number, der ikke er et af dine tilsluttede numre.
403 Nøglen eller teammedlemmet må muligvis ikke redigere routing. Skrivning kræver redigeringsrettigheder til kampagner; læsning af liste og status kræver visningsrettigheder.
404 Entry Point eller agent blev ikke fundet — enten eksisterer det ikke, eller også tilhører det en anden konto.

De delte koder, som ethvert endpoint kan returnere — 401, 403 (din plan inkluderer ikke API-adgang), 429 (rate limit) og 500 — er angivet med vejledning om genforsøg i Errors & Pagination.


Næste skridt