Integroi mukautetut agentit Recommended Actions Agentin kanssa

Recommended Actions Agent in Dynamics 365 Sales esittelee priorisoidut suositukset mahdollisuuksista. Se tarjoaa yhteisen pisteytysputken, datasopimukset ja kaksisuuntaisen tilasynkronoinnin, jotta kuka tahansa mukautettu agentti voi esittää suosituksia yhdessä ensimmäisen osapuolen agenttien kanssa.

Tässä artikkelissa kuvataan arkkitehtuuria, keskeisiä komponentteja, datasopimuksia ja integraatiovirtaa, joita käytetään, kun mukautettu agentti integroituu Recommended Actions Agentiin. Se tarjoaa perustavanlaatuisen tiedon, joka tarvitaan integraation toteuttamiseen.

Edellytykset

  • NextBestActionAgent-ratkaisu otettu käyttöön kohdeorganisaatiossa. Lisätietoja löytyy kohdasta Tuo agentti kohdeympäristöön.

  • Myyjällä on asianmukaiset Dataverse-tietoturvaroolit , kuten kohdassa Permissions required for custom security roles on kuvattu.

  • Vakaa, yksilöllinen SourceAgentId-merkkijono mukautetulle agentille. Lisätietoja löytyy osoitteesta Lisää mukautettuja agentteja suositellut toiminnot.

  • Seuraavat oikeudet vaaditaan suositeltujen toimintojen työntämiseen:

    Taulukko Tarvittavat oikeudet Käyttöalue
    msdyn_rawactioncatalogue Lue, Kirjoita, Liitä ja Lisätä Globaali
    msdyn_prioritizedactioncatalogue Lue, Kirjoita, Liitä ja Lisätä Globaali
    msdyn_recommendedactionsourceagentconfig Lue Globaali
    msdyn_salesagentprofile Lue Globaali

Integraation arkkitehtuuri

Recommended Actions Agent -integraatio käyttää prosessointiputkea, joka vastaanottaa raakatoimintoja lähdeagenteilta, pisteyttää ne UICE (Kiireellisyys, Vaikutus, Luottamus, Ponnistus) -pisteytysmoottorilla ja tuo priorisoidut tulokset esiin myyjäkarusellissa.

Käsittelyputki toimii seuraavasti:

  1. Tulliagentti havaitsee toiminnallisen oivalluksen (esimerkiksi kauppariski, jumissa oleva kauppa tai puuttuva sidosryhmä).
  2. Mukautettu agentti kutsuu mukautetun msdyn_PushActionDataToRecommendedActionAgent API:n työntämään toiminnon.
  3. Toiminto tallennetaan ( msdyn_rawactioncatalogue syöttötaulukkoon).
  4. Jokaiselle toiminnolle pisteytyskone:
    • Hakee entiteettisignaaleja Dataversesta.
    • Hakee asiakohtaiset priorisointitiedot toimintoluettelosta.
    • Kutsuu LLM:ää pisteyttämään toiminnan UICE:n (Kiireellisyys, Vaikutus, Luottamus, Ponnistus) ulottuvuuksissa.
    • Soveltaa lattia- ja kattosääntöjä.
    • Laskee lopullisen prioriteettipistemäärän käyttämällä GetRecommendedActionAgentResponse.
  5. Pisteytetty toimenpide lisätään kohtaan msdyn_prioritizedactioncatalogue (tulostaulukko).
  6. Suositellut toiminnot Agent Carousel hakee pisteettyjä toimintoja ja renderöi kortteja.

Tärkeimmät osat

Integraatio perustuu seuraaviin Dataverse-tauluihin ja API-rajapintoihin.

Komponentti Sijainti Description
Syötetaulukko msdyn_rawactioncatalogue (Dataverse) Raakkoja toimintoja, joita mukautetut agentit työntävät
Tulostaulu msdyn_prioritizedactioncatalogue (Dataverse) Käyttöliittymän pisteytetyt ja luokitellut toiminnot
Agentin määritys msdyn_recommendedactionsourceagentconfig (Dataverse) Agenttikohtainen rekisteröinti ja määritys
Push-ohjelmointirajapinta msdyn_PushActionDataToRecommendedActionAgent (Mukautettu API) Agentti → Suositellut toiminnot Agentti -toiminnon työntö

Agentin rekisteröinti

Rekisteröi mukautetut agentit Recommended Actions Agentin kanssa, jotta alusta tunnistaa ja hakee heidän toimintonsa. Lisätietoja agenttien rekisteröinnistä löydät osoitteesta Lisää mukautettuja agentteja suositellut toiminnot.

Kun rekisteröit agentin, se luo merkinnän .msdyn_recommendedactionsourceagentconfig Uniikki SourceAgentId tunnistaa mukautetun agentin merkinnän.

Agentin määritys

Taulukossa msdyn_recommendedactionsourceagentconfig on agenttikohtainen konfiguraatio, joka ohjaa, miten Suositellut toiminnot -agentti tulkitsee agentin toimia. Kaksi tärkeintä kenttää ovat msdyn_internalprioritizationinstruction ja msdyn_syncactionexecutionstateapiconfig.

Voit soveltaa asetuksia joko päivittämällä taulutietueen manuaalisesti tai kutsumalla mukautettua API UpsertRecommendationAgentConfigRequest:a.

UpsertRecommendationAgentConfigRequest schema

Seuraava esimerkki näyttää skeeman käytettävissä olevat konfiguraatiokentät.

{
  "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-kenttä Tyyppi Description
agentName merkkijono Määrittää arvon kenttään msdyn_agentname (enintään 850 merkkiä). Pakollinen uusille tietueille.
agentType merkkijono Agenttiluokka. Käytä "CustomAgent"-toimintoa ei-myyntimahdollisuuksien agenteille profiilin luomiseen automaattisesti.
isRecommendedActionAgentEnabled boolean Vastaa arvoa msdyn_isrecommendedactionagentenabled. Tyhjäarvo = jätä muuttumaton.
salesAgentProfileId Guid? Linkit kohteeseen msdyn_salesagentprofile. Käytetään tietueen hakuun upsert-toiminnossa.
agentImpactMapping merkkijono Tasainen JSON-taulukko periaatteiden nimiä. Yhdistetään kohteeseen msdyn_agentimpactmapping.
internalPrioritizationInstruction merkkijono JSON signaalijärjestelmällä. Yhdistetään kohteeseen msdyn_internalprioritizationinstruction.
syncActionExecutionStateApiConfig merkkijono JSON-objekti {"syncactionuistatusapiname":"..."}. Määritetään kohteeseen msdyn_syncactionexecutionstateapiconfig.
sourceAgentUniqueId merkkijono Kartat msdyn_sourceagentuniqueid.
kuvaus merkkijono Vastaa kohdetta msdyn_sourcedescription (enintään 1000 merkkiä).

Sisäisen priorisoinnin ohjeet

Sisäinen priorisointikäsky sisältää agenttikohtaisia signaalimetatietoja, jotka kertovat pisteytysmoottorille, miten agentin priorisointikenttiä tulkitaan. Se on JSON-objekti, jossa on ylimmän signals tason taulukko. Jokainen signaali deserialisoidaan seuraavilla AgentSignalInstructionConfig kentillä:

kenttä Tyyppi Description
name merkkijono Signaalitunniste — käytetään avaimena pisteytyskehotteen Signaaliviite-osiossa
tyyppi merkkijono Tietotyyppi: "string", "number", "boolean"
lähde merkkijono Kuvaava selite sille, mistä signaali on peräisin. Ei käytetä reititykseen — fetch_info.fetch_type ohjaa varsinaista hakumekanismia. Tyypillisesti "action_data" agentin työntämille signaaleille.
ulottuvuuden vaikutus {ulottuvuus: voima} Mitä UICE-ulottuvuuksia tämä signaali vaikuttaa ja kuinka voimakkaasti. Avaimet: "kiireellisyys", "vaikutus", "itsevarmuus", "ponnistelu". Vahvuudet: "vahva", "kohtalainen", "heikko"
Tulkinta merkkijono Luonnollisen kielen kuvaus siitä, mitä signaali tarkoittaa pisteytyksessä — lisätty LLM-kehotteeseen
luotettavuus merkkijono Kuinka luotettava tämä signaali on: "korkea", "keskitaso", "matala"
pakollinen boolean Onko signaalin oltava olemassa pisteytystä varten
fetch_info objekti Määrittää, missä ja miten signaalin arvo noudetaan pisteytyksen aikana.

Esimerkki signaalien estosta:

{
  "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" }
    }
  ]
}

Synkronointitoiminnon suoritustilan ohjelmointirajapinnan määritys

Sync action execut state API -konfiguraatio on JSON-objekti, joka määrittää mukautetun API-nimen, jonka Recommended Actions Agent kutsuu, kun myyjä toimii kortilla (esimerkiksi merkitsee sen täydelliseksi tai merkityksettömäksi). Tämä ohjelmointirajapinta määrittää toiminnon tilan lähteen mukautetussa agentissa.

{
  "syncactionuistatusapiname": "your_SyncBackCustomApiName"
}

Toimintatyöntösopimus

Mukautetut agentit työntävät msdyn_PushActionDataToRecommendedActionAgent toimintoja käyttämällä mukautettua API:ta. API:a kutsutaan aina, kun agentti luo tai päivittää toiminnon kohdeyksikölle.

Pyynnön parametrit

Parametri Tyyppi Pakollinen Description
msdyn_ActionId merkkijono Yes Agentin yksilöllinen tunniste tälle toiminnolle. Käytetään mittarin tunnistuksen ja tilan synkronoinnin kanssa. On oltava deterministinen (sama toiminto = sama tunnus). Esimerkkimuoto: DealRisk_{opportunityId}_{riskType}
msdyn_SourceAgentId merkkijono Yes Agentin tunniste. Sen täytyy vastata agentin konfiguraatiotietueen msdyn_agentname. Esimerkki: "DealClosingAgent"
msdyn_TargetEntityId uniqueidentifier (GUID) Yes Kohdetietueen (Mahdollisuus, Johto) GUID, johon tämä toiminto liittyy
msdyn_TargetEntityTypeName merkkijono Yes Kohde-entiteetin looginen nimi. Esimerkki: "mahdollisuus", "lead"
msdyn_ActionReason merkkijono Yes Syy, miksi toiminto luotiin. Pisteytysmoottorin käyttämä periaatteiden kohdistamiseen.
msdyn_ActionUIPayload merkkijono No JSON-hyötykuorma korttien renderöintiin. Jos kortti jätetään pois, Recommended Actions Agent ei voi näyttää korttia.
msdyn_ActionPrioritizationData merkkijono No JSON agenttikohtaisilla pisteytyksillä
msdyn_ActionCTA merkkijono No CTA-tyyppiä kuvaava merkkijono. Esimerkki: "Sähköposti", "Arvostelu", "Puhelu"
msdyn_PrioritizationPrinciples merkkijono No Priorisointiperiaatteiden JSON-matriisi, joihin tämä toiminto yhdistää (voi ohittaa agenttitason yhdistämismäärityksen)

Esimerkki: C#-lisäosakutsu

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 -hyötykuormasopimus

Kentällä msdyn_ActionUIPayload on JSON-hyötykuorma, joka ohjaa, miten toimintakortti ilmestyy Suositeltujen toimintojen agenttikarusellissa.

{
  "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\"}"
}

Priorisointidatan sopimus

Kenttä msdyn_prioritizationdata antaa agentille mahdollisuuden välittää agenttikohtaisia signaaleja, jotka vaikuttavat siihen, miten UICE-pisteytysmoottori priorisoi toiminnon.

[
  { "signalName": "risk", "value": "low" },
  { "signalName": "riskType", "value": "4" }
]

Pisteytysmoottori lukee nämä signaalit yhdessä entiteettitason signaalien kanssa (kauppaarvo, vaihe, kilpailijat jne.). Agentin msdyn_internalprioritizationinstruction konfiguraatio kertoo LLM:lle, miten kukin signaali tulkitaan, ja pisteytysmoottori yhdistää kaikki signaalit UICE-pisteytyskehotteeseen.

Toimintaversiot ja mitätöinti

Kun agentti päivittää aiemmin työnnetyn toiminnon tietoja, se luo uuden tietueen kutsumalla uudelleen msdyn_ActionIdmsdyn_PushActionDataToRecommendedActionAgent . Järjestelmä luo uuden rivin kohteessa msdyn_rawactioncatalogue samalla msdyn_actionid mutta uudella msdyn_rawactioncatalogueid. Suositellut toiminnot -agentti näyttää vanhan version, kunnes se käsittelee uuden.

Toimintojen mitätöimiseksi (esimerkiksi kun riski ratkaistaan) agentti kutsuu mukautettua msdyn_RAAgent_RemoveActionsV2 API:ta osoitteella .actionId Tämä toiminto merkitsee kaikki msdyn_rawactioncatalogue kyseisen toiminnon tiedot passiivisiksi, ja kortti katoaa karusellista.

Kaksisuuntainen tilasynkronointi

Toimintatila synkronoituu sekä Recommended Actions Agent -karusellissa että räätälöidyssä agentissa, jotta myyjät näkevät johdonmukaiset tiedot riippumatta siitä, missä he toimivat.
Suositellut toimenpiteet Agentti → tulliagentti (myyjä toimii karusellissa): Kun myyjä merkitsee toiminnan karusellissa tehdyksi tai hylätyksi :

  1. Suositellut toiminnot -agentti päivittää kohteen msdyn_actionuistatus kohteessa msdyn_prioritizedactioncatalogue.
  2. Suositellut toiminnot Agentti lukee msdyn_syncactionexecutionstateapiconfig agentin konfiguraatiosta.
  3. Suositellut toiminnot Agentti kutsuu agentin mukautettua API:ta seuraavasti:
Parametri Tyyppi Description
Actionid GUID Toiminnon tunnus
Valtion merkkijono "MarkedDone" tai "Vapautettu"

Agentin on toteutettava mukautettu API, joka hyväksyy nämä kaksi parametria ja päivittää toimintotilan omassa tietovarastossaan.

Custom Agent → Recommended Actions Agent (myyjä toimii agentin käyttöliittymässä): Kun myyjä toteuttaa toiminnon agentin omassa käyttöliittymässä (esimerkiksi merkitsee sen lieventäväksi mukautetun agentin sivulla), agentti synkronoi kyseisen tilan Suositellut toiminnot -agenttiin kutsumalla msdyn_SyncActionExecutionStateFromAgent. Tämä toiminto päivittää Suositellut toiminnot -agentin tulostaulukon tilan piilottaen sen karusellilta.

Parametri Tyyppi Pakollinen Description
msdyn_ActionId merkkijono Yes Toimintotunniste (sama kuin mitä työnnettiin)
msdyn_ActionState kokonaisluku Yes Uusi tila — arvot (määritetty arvoihin MarkAsDone/Dismissed)
msdyn_TargetEntityId uniqueidentifier Yes Kohde-entiteetin GUID-tunnus
TargetEntityTypeName merkkijono Yes Kohde-entiteetin looginen nimi
msdyn_TrackingId merkkijono No Valinnainen seuranta-/korrelaatiotunnus

Testaus ja tarkistukset

Konfiguroinnin ja toteutuksen jälkeen validoi end-to-end-flow suorittamalla seuraavat tarkistukset.

Vahvista agentin konfiguraatio:

GET [org-url]/api/data/v9.2/msdyn_recommendedactionsourceagentconfigs
?$filter=msdyn_agentname eq 'YourAgentName'
&$select=msdyn_agentname,msdyn_agentimpactmapping,msdyn_internalprioritizationinstruction,msdyn_syncactionexecutionstateapiconfig

Käynnistä testitoiminto kutsumalla msdyn_PushActionDataToRecommendedActionAgent ja varmistamalla, että msdyn_IsSuccess se on totta, ja uusi tietue ilmestyy .msdyn_rawactioncatalogue

Laukaise pisteytys pyynnöstä soittamalla msdyn_RAAgent_TriggerRecommendedActionsAgentOrchestration (sen sijaan, että odottaisit 4 tunnin ajastinta).

Varmista pisteytetyt tulokset:

    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

Odotusarvot:

  • msdyn_actionscore on täytetty arvolla alueella 0–10.
  • msdyn_hascrossedfloor on väärä (toiminta tapahtuu lattian yläpuolella ja näkyy karusellissa).
  • msdyn_actionuistatus on 1 (aktiivinen).
  • msdyn_scoredetails sisältää LLM:n luoman selityksen.

Varmista karusellin näyttö avaamalla Opportunity-lomake Dynamics 365 Sales -sovelluksessa ja tarkistamalla Ehdotetut toiminnot -osio. Varmista tilan synkronointi hylkäämällä toiminto karusellissa (sync-back API tulisi kutsua muodossa state = "Dismissed") ja merkitsemällä toiminto agentin käyttöliittymään (tulostaulun tietue tulisi heijastaa päivitettyä msdyn_actionuistatus).

Esimerkki: Myynnin mahdollisuusagentti

Sales Opportunity Agent on ensimmäinen agentti, joka on perehdytetty Recommended Actions Agentiin, ja sen integraatio toimii viitetoteutuksena.

Agentin konfiguraatioarvot:

Määrityskenttä Myyntimahdollisuusagentin arvo (OraDefaults.cs)
msdyn_agentname SalesOpportunityAgent
msdyn_agentimpactmapping ["DealRisk","Kaupan nopeus"]
msdyn_syncactionexecutionstateapiconfig {"syncactionuistatusapiname":"msdyn_SyncDealRiskActionFromNba"}
msdyn_internalprioritizationinstruction Katso myyntimahdollisuusagentin tuotantoarvo

Kun Myyntimahdollisuusagentti-tutkimus on valmis ja tunnistaa kauppariskit, DealRiskToNBAService kukin riski siirretään erillisenä toimintona:

Push-parametri Myyntimahdollisuusagentin arvo
msdyn_ActionId DealRisk_{opportunityId}_{riskType}
msdyn_SourceAgentId "DealRiskAgent"
msdyn_TargetEntityTypeName "mahdollisuus"
msdyn_ActionReason Tutkimuksen riskikuvaus
msdyn_ActionUIPayload Kortti, jossa on riskiotsikko + kuvaus
msdyn_ActionPrioritizationData {"riskType":"8","risk":"Missing BANT Info"} (esimerkki)

Tilan synkronointikäyttäytyminen:

  • Myyntimahdollisuuksien agentti → suositellut toimenpiteet -agentti: Kun myyjä merkitsee riskin tehdyksi tutkimussivulla, välittäjä soittaa msdyn_SyncActionExecutionStateFromAgent.
  • Suositellut toimenpiteet agentille → myyntimahdollisuuksien välittäjälle: Kun myyjä hylkää kortin karusellissa, Suositellut toiminnot -agentti kutsuu ora_UpdatedActionStateFromRAAgent (määritetty agentin konfiguraatiossa).