Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Agenten for anbefalte handlinger i Dynamics 365 Sales viser prioriterte anbefalinger for salgsmuligheter. Den tilbyr en delt scorepipeline, datakontrakter og toveis tilstandssynkronisering slik at enhver tilpasset agent kan fremlegge anbefalinger sammen med førstepartsagenter.
Denne artikkelen beskriver arkitekturen, nøkkelkomponentene, datakontraktene og integrasjonsflyten som brukes når en tilpasset agent integreres med Recommended Actions Agent. Den gir den grunnleggende kunnskapen som kreves for å implementere en integrasjon.
Forutsetninger
NextBestActionAgent-løsning distribuert til målorganisasjonen. For mer informasjon, se Importer en agent til et målmiljø.
Selger har passende Dataverse-sikkerhetsroller som beskrevet i Tillatelser som kreves for tilpassede sikkerhetsroller.
En stabil, unik SourceAgentId-streng for den tilpassede agenten. For mer informasjon, se Legg til tilpassede agenter for anbefalte tiltak.
Følgende tillatelser kreves for å pushe anbefalte handlinger:
Tabell Nødvendige rettigheter Område msdyn_rawactioncatalogue Les, skriv, legg til og legg ved. Global msdyn_prioritizedactioncatalogue Les, skriv, legg til og legg ved. Global msdyn_recommendedactionsourceagentconfig Les Global msdyn_salesagentprofile Les Global
Integrasjon arkitektur
Integrasjonen med Recommended Actions Agent bruker en prosesseringspipeline som tar inn rå handlinger fra kildeagenter, scorer dem ved hjelp av en UICE-motor (Urgency, Impact, Confidence, Effort), og viser de prioriterte resultatene i selgerkarusellen.
Behandlingsrørledningen fungerer som følger:
- Custom agenten oppdager en handlingsrettet innsikt (for eksempel en avtalerisiko, en stoppet avtale eller en manglende interessent).
-
Den tilpassede agenten kaller det tilpassede API-et
msdyn_PushActionDataToRecommendedActionAgentfor å sende handlingen. - Handlingen lagres i
msdyn_rawactioncatalogue(inndatatabell). - For hver handling gjør Scoring Engine:
- Henter enhetssignaler fra Dataverse.
- Henter agentspesifikke prioriteringsdata fra handlingskatalogen.
- Bruker LLM-en til å vurdere handlingen langs UICE-dimensjonene (Hast, Påvirkning, Tiltro, Innsats).
- Gjelder regler for gulv og tak.
- Beregner den endelige prioritetsscoren ved å bruke
GetRecommendedActionAgentResponse.
- Den scorede handlingen settes inn i
msdyn_prioritizedactioncatalogue(utdatatabellen). - Agent Carousel henter scorede handlinger og gjengir kort.
Nøkkelkomponenter
Integrasjonen baserer seg på følgende Dataverse-tabeller og API-er.
| Komponent | Lokasjon | Description |
|---|---|---|
| Inndatatabell | msdyn_rawactioncatalogue (Dataverse) | Råhandlinger som egendefinerte agenter sender |
| Utdatatabell | msdyn_prioritizedactioncatalogue (Dataverse) | Resultater og rangerte handlinger for brukergrensesnittet |
| Agentkonfigurasjon | msdyn_recommendedactionsourceagentconfig (Dataverse) | Per agent-registrering og -konfigurasjon |
| Push-API | msdyn_PushActionDataToRecommendedActionAgent (Egendefinert API) | Agent → Anbefalte handlinger Agenthandling: push |
Agentregistrering
Registrer tilpassede agenter hos Recommended Actions Agent slik at plattformen gjenkjenner og henter handlingene deres. For mer informasjon om registrerende agenter, se Legg til tilpassede agenter for anbefalte tiltak.
Når du registrerer en agent, opprettes det en oppføring i msdyn_recommendedactionsourceagentconfig. Den unike SourceAgentId identifiserer oppføringen til den egendefinerte agenten.
Agentkonfigurasjon
Tabellen msdyn_recommendedactionsourceagentconfig inneholder per-agent-konfigurasjon som styrer hvordan Anbefales Handlinger-agenten tolker agentens handlinger. De to viktigste feltene å befolke er msdyn_internalprioritizationinstruction og msdyn_syncactionexecutionstateapiconfig.
Du kan bruke konfigurasjon enten ved å manuelt oppdatere tabellposten eller ved å kalle det tilpassede API-et UpsertRecommendationAgentConfigRequest.
UpsertRecommendationAgentConfigRequest-skjema
Følgende eksempel viser de tilgjengelige konfigurasjonsfeltene i skjemaet.
{
"agentName": "YourAgentName",
"agentType": "CustomAgent",
"isRecommendedActionAgentEnabled": true,
"salesAgentProfileId": "<SourceAgentId that was configured>",
"agentImpactMapping": "[]",
"internalPrioritizationInstruction": "{\"signals\":[...]}",
"syncActionExecutionStateApiConfig": "{\"syncactionuistatusapiname\":\"your_SyncBackCustomApiName\"}",
"description": "Brief description of your agent"
}
| JSON-felt | Type | Description |
|---|---|---|
| agentName | streng | Karter til msdyn_agentname (maks 850 tegn). Påkrevd for nye oppføringer. |
| agentType | streng | Agentkategori. Bruk "CustomAgent" for ikke-Sales Opportunity Agent-agenter for å automatisk opprette en profil. |
| isRecommendedActionAgentEnabled | boolsk | Kart til msdyn_isrecommendedactionagentenabled. Null = la være uendret. |
| salesAgentProfileId | Guid? | Lenker til msdyn_salesagentprofile. Brukes til postoppslag på upsert. |
| agentImpactMapping | streng | Flat JSON-array av hovednavn. Kart til msdyn_agentimpactmapping. |
| internPrioriteringsinstruksjon | streng | JSON med signalarray. Kart til msdyn_internalprioritizationinstruction. |
| syncActionExecutionStateApiConfig | streng | JSON-objekt {"syncactionuistatusapiname":"..."}. Kart til msdyn_syncactionexecutionstateapiconfig. |
| sourceAgentUniqueId | streng | Kart til msdyn_sourceagentuniqueid. |
| beskrivelse | streng | Karter til msdyn_sourcedescription (maks 1000 karakterer). |
Intern prioriteringsinstruksjon
Den interne prioriteringsinstruksjonen inneholder agent-spesifikke signalmetadata som forteller poengmotoren hvordan den skal tolke agentens prioriteringsdatafelt. Det er et JSON-objekt med et toppnivå-array signals . Hvert signal deserialiseres inn i AgentSignalInstructionConfig med følgende felt:
| Felt | Type | Description |
|---|---|---|
| name | streng | Signalidentifikator — brukt som nøkkel i poengpromptens Signal Reference-seksjon |
| type | streng | Datatype: "streng", "tall", "boolean" |
| kilde | streng | Beskrivende etikett for hvor signalet kommer fra. Brukes ikke til ruting — fetch_info.fetch_type styrer selve hentemekanismen. Vanligvis «action_data» for signaler sendt av agenten. |
| dimension_influence | {dimensjon: styrke} | Hvilke UICE-dimensjoner dette signalet påvirker og hvor sterkt. Nøkler: «hastverk», «påvirkning», «selvtillit», «innsats». Styrker: "sterk", "moderat", "svak" |
| Tolkning | streng | Naturlig språklig beskrivelse av hva signalet betyr for poenggiving — injisert i LLM-prompten |
| pålitelighet | streng | Hvor pålitelig dette signalet er: "høy", "middels", "lav" |
| obligatorisk | boolsk | Om signalet må være til stede for scoring |
| fetch_info | objekt | Styrer hvor og hvordan signalverdien hentes ved scoringstidspunkt. |
Eksempel på signalblokk:
{
"signals": [
{
"name": "risk_type",
"type": "string",
"source": "action_data",
"dimension_influence": { "urgency": "moderate", "confidence": "weak" },
"interpretation": "Risk category code assigned by the source agent (e.g. 8 = Missing BANT Info). Used for pre-filter rule matching and prompt context.",
"reliability": "high",
"required": false,
"fetch_info": { "fetch_type": "action_data", "crm_field": "riskType" }
},
{
"name": "risk_label",
"type": "string",
"source": "action_data",
"dimension_influence": { "urgency": "weak", "confidence": "weak" },
"interpretation": "Human-readable risk name from the source agent (e.g. 'Missing BANT Info', 'Stalled Pipeline'). Useful for prompt context and seller explanation.",
"reliability": "high",
"required": false,
"fetch_info": { "fetch_type": "action_data", "crm_field": "risk" }
}
]
}
API-konfigurasjon for synkroniseringshandlingstilstand
API-konfigurasjonen for synkroniseringshandlingsutførelse er et JSON-objekt som spesifiserer det tilpassede API-navnet Recommended Actions Agent kaller når en selger handler på et kort (for eksempel markerer det som fullført eller irrelevant). Denne API-en angir statusen for handlingen i den egendefinerte kildeagenten.
{
"syncactionuistatusapiname": "your_SyncBackCustomApiName"
}
Aksjonspush-kontrakt
Egendefinerte agenter sender handlinger ved å bruke det tilpassede msdyn_PushActionDataToRecommendedActionAgent API-et. API-et kalles hver gang agenten genererer eller oppdaterer en handling for en målenhet.
Forespørselsparametere
| Parameteren | Type | Påkrevd | Description |
|---|---|---|---|
| msdyn_ActionId | streng | Ja | Agentens unike identifikator for denne handlingen. Brukes til deduplisering og tilstandssynkronisering. Må være deterministisk (samme handling = samme ID). Eksempelformat: DealRisk_{opportunityId}_{riskType} |
| msdyn_SourceAgentId | streng | Ja | Agentens identifikator. Må matche msdyn_agentname i agentens konfigurasjonspost. Eksempel: "DealClosingAgent" |
| msdyn_TargetEntityId | Unikidentifikator (GUID) | Ja | GUID for målposten (Mulighet, Lead) som denne handlingen relaterer seg til |
| msdyn_TargetEntityTypeName | streng | Ja | Logisk navn på målentiteten. Eksempel: «mulighet», «lede» |
| msdyn_ActionReason | streng | Ja | Årsaken til at handlingen ble generert. Brukes av poengmotoren for tilordning av prinsipper. |
| msdyn_ActionUIPayload | streng | Nei | JSON-data for gjengivelse av kort. Hvis det utelates, kan ikke Recommended Actions Agent vise kortet. |
| msdyn_ActionPrioritizationData | streng | Nei | JSON med agentspesifikke data for poengberegning |
| msdyn_ActionCTA | streng | Nei | CTA-typestreng. Eksempel: «E-post», «Anmeldelse», «Samtale» |
| msdyn_PrioritizationPrinciples | streng | Nei | JSON-matrise med prioriteringsprinsipper som denne bestemte handlingen tilordnes til (kan overstyre tilordning på agentnivå) |
Eksempel: C# plugin-kall
var request = new OrganizationRequest("msdyn_PushActionDataToRecommendedActionAgent")
{
["msdyn_ActionId"] = $"DealRisk_{opportunityId}_{riskType}",
["msdyn_SourceAgentId"] = "DealClosingAgent",
["msdyn_TargetEntityId"] = opportunityId, // Guid
["msdyn_TargetEntityTypeName"] = "opportunity",
["msdyn_ActionReason"] = "Customer has not responded in 14 days, deal is at risk of stalling",
["msdyn_ActionUIPayload"] = JsonConvert.SerializeObject(new
{
version = "1.0",
payload = new
{
header = "Follow up with Contoso",
description = "No customer response in 14 days. Deal may stall without re-engagement.",
oncardClickActionType = "Navigate",
oncardClickActionTypeParameters =
"{etn=\"opportunity\", id=\"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb\", pagetype=\"entityrecord\"}"
}
}),
["msdyn_ActionPrioritizationData"] = JsonConvert.SerializeObject(new
{
riskType = "14",
risk = "low"
})
};
var response = orgService.Execute(request);
bool success = (bool)response["msdyn_IsSuccess"];
Action UI-nyttelastkontrakt
Feltet msdyn_ActionUIPayload inneholder en JSON-nyttelast som styrer hvordan et handlingskort vises i Recommended Actions Agent-karusellen.
{
"version": 1.0,
"header": "Follow up with Contoso on pricing proposal",
"description": "Stakeholder engagement has dropped. The customer expressed interest in the enterprise tier but hasn't responded to the last proposal sent 10 days ago.",
"oncardClickActionType": "Navigate",
"oncardClickActionTypeParameters": "{\"etn\":\"opportunity\",\"id\":\"<guid>\",\"pagetype\":\"entityrecord\"}",
"onctaClickActionType": "Navigate",
"onctaClickActionTypeParameters": "{\"etn\":\"opportunity\",\"id\":\"<guid>\",\"pagetype\":\"entityrecord\"}"
}
Prioriteringsdatakontrakt
Feltet msdyn_prioritizationdata lar en agent sende agentspesifikke signaler som påvirker hvordan UICE-poengmotoren prioriterer en handling.
[
{ "signalName": "risk", "value": "low" },
{ "signalName": "riskType", "value": "4" }
]
Poengmotoren leser disse signalene sammen med entitetsnivå-signaler (avtaleverdi, nivå, konkurrenter, og så videre). Agent-konfigurasjonen msdyn_internalprioritizationinstruction forteller LLM-en hvordan den skal tolke hvert signal, og poengmotoren kombinerer alle signalene i UICE-poengprompten.
Handlingsversjonering og ugyldiggjøring
Når en agent oppdaterer data for en tidligere pushet handling, oppretter den en ny post med samme msdyn_ActionId ved å kalle msdyn_PushActionDataToRecommendedActionAgent igjen. Systemet oppretter en ny rad med msdyn_rawactioncatalogue samme msdyn_actionid , men en ny msdyn_rawactioncatalogueid. Agent for anbefalte handlinger viser stadig den gamle versjonen til den behandler den nye.
For å ugyldiggjøre en handling (for eksempel når en risiko løses), kaller agenten det tilpassede msdyn_RAAgent_RemoveActionsV2 API-et med .actionId Denne handlingen markerer alle msdyn_rawactioncatalogue poster for den handlingen som inaktive, og kortet forsvinner fra karusellen.
Toveis tilstandssynkronisering
Handlingstilstanden synkroniseres både i Recommended Actions Agent-karusellen og din tilpassede agent for å sikre at selgere ser konsistent informasjon uansett hvor de handler under en handling.
Anbefalte handlinger Agent → spesialagent (selger handler i karusellen): Når en selger markerer en handling som utført eller avvist i karusellen:
- Anbefalt handlingsagent oppdaterer
msdyn_actionuistatusimsdyn_prioritizedactioncatalogue. - Recommended Actions Agent leser fra
msdyn_syncactionexecutionstateapiconfigagentkonfigurasjonen. - Recommended Actions Agent kaller agentens tilpassede API med:
| Parameteren | Type | Description |
|---|---|---|
| actionid | GUID | Handlingsidentifikatoren |
| Staten | streng | "MarkertFerdig" eller "Avskjediget" |
Agenten må implementere et tilpasset API som aksepterer disse to parameterne og oppdaterer handlingstilstanden i sin egen datalagring.
Custom agent → Recommended Actions Agent (selger handler i agentens brukergrensesnitt): Når en selger handler på en handling i agentens eget brukergrensesnitt (for eksempel markerer den som mitigert på en egendefinert agentside), synkroniserer agenten den tilstanden til Recommended Actions Agent ved å kalle msdyn_SyncActionExecutionStateFromAgent. Denne handlingen oppdaterer tilstanden i utdatatabellen Anbefalte handlinger-agenten, og skjuler den for karusellen.
| Parameteren | Type | Påkrevd | Description |
|---|---|---|---|
| msdyn_ActionId | streng | Ja | Handlingsidentifikatoren (samme som den som ble pushet) |
| msdyn_ActionState | heltall | Ja | Ny tilstand — verdier (mappet til MarkAsDone/Dismissed) |
| msdyn_TargetEntityId | Unikidentifikator | Ja | GUID for målentitet |
| TargetEntityTypeName | streng | Ja | Logisk navn på målentitet |
| msdyn_TrackingId | streng | Nei | Valgfri sporing/korrelasjons-ID |
Testing og validering
Etter konfigurasjon og implementering, valider ende-til-ende-flyten ved å utføre følgende kontroller.
Verifiser agentkonfigurasjonen:
GET [org-url]/api/data/v9.2/msdyn_recommendedactionsourceagentconfigs
?$filter=msdyn_agentname eq 'YourAgentName'
&$select=msdyn_agentname,msdyn_agentimpactmapping,msdyn_internalprioritizationinstruction,msdyn_syncactionexecutionstateapiconfig
Utfør en testhandling ved å anrope msdyn_PushActionDataToRecommendedActionAgent og bekreft at msdyn_IsSuccess er sann, og at en ny post vises i msdyn_rawactioncatalogue.
Trigger poengscoring på forespørsel ved å ringe msdyn_RAAgent_TriggerRecommendedActionsAgentOrchestration (i stedet for å vente på 4-timers timeren).
Verifiser scoret resultat:
GET [org-url]/api/data/v9.2/msdyn_prioritizedactioncatalogues
?$filter=msdyn_actionid eq 'your-action-id'
&$select=msdyn_actionid,msdyn_actionscore,msdyn_actionuipayload,msdyn_hascrossedceiling,msdyn_hascrossedfloor,msdyn_actionuistatus,msdyn_scoredetails
Forventede verdier:
-
msdyn_actionscorefylles ut med en verdi i området 0–10. -
msdyn_hascrossedfloorer falsk (handlingen er over gulvet og vises i karusellen). -
msdyn_actionuistatuser 1 (Aktiv). -
msdyn_scoredetailsinneholder llm-generert forklaring.
Verifiser karusellvisning ved å åpne et Mulighetsskjema i Dynamics 365 Sales og krysse av i seksjonen Foreslåtte handlinger. Verifiser tilstandssynkronisering ved å avvise en handling i karusellen (sync-back-API-et skal kalles med state = "Dismissed") og ved å markere en handling i agentgrensesnittet (utdatatabellposten skal gjenspeile den oppdaterte msdyn_actionuistatus).
Eksempel: Salgsmulighetsagent
Sales Opportunity Agent er den første agenten som blir integrert i Recommended Actions Agent, og integrasjonen fungerer som referanseimplementasjon.
Agentkonfigurasjonsverdier:
| Konfigurasjonsfelt | Verdi for salgsmulighetsagent (fra OraDefaults.cs) |
|---|---|
| msdyn_agentname | "SalgsMulighetAgent" |
| msdyn_agentimpactmapping | ["DealRisk","Avtaletempo"] |
| msdyn_syncactionexecutionstateapiconfig | {"syncactionuistatusapiname":"msdyn_SyncDealRiskActionFromNba"} |
| msdyn_internalprioritizationinstruction | Se salgsmulighetsagentens produksjonsverdi |
Når Sales Opportunity Agent har fullført undersøkelsen og identifisert risikoer knyttet til avtalen, DealRiskToNBAService oppretter hver risiko som en egen handling:
| pushparameter | Verdi av salgsmulighetsagent |
|---|---|
| msdyn_ActionId | DealRisk_{opportunityId}_{riskType} |
| msdyn_SourceAgentId | "DealRiskAgent" |
| msdyn_TargetEntityTypeName | "mulighet" |
| msdyn_ActionReason | Risikobeskrivelse fra forskning |
| msdyn_ActionUIPayload | Kort med risikooverskrift + beskrivelse |
| msdyn_ActionPrioritizationData |
{"riskType":"8","risk":"Missing BANT Info"} (eksempel) |
Tilstandssynkroniseringsoppførsel:
-
Salgsmulighetsagent → Agent for anbefalte handlinger: Når en selger markerer en risiko som gjort på forskningssiden, ringer
msdyn_SyncActionExecutionStateFromAgentagenten. -
Anbefalte handlinger Agent → Salgsmulighetsagent: Når en selger avviser et kort i karusellen, kaller
ora_UpdatedActionStateFromRAAgentRecommended Actions Agent (konfigurert i agentkonfigurasjonen).