Web API-Funktionen- und Aktionen-Beispiel
Veröffentlicht: Januar 2017
Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Diese Beispielgruppe veranschaulicht, wie ungebundene und gebundene Funktionen und Aktionen, einschließlich benutzerdefinierter Aktionen mithilfe dem Microsoft Dynamics 365 Web API angerufen werden. Dieses Beispiel wurde als ein separates Projekt für die folgenden Sprachen implementiert:
In diesem Thema werden die Struktur und der Inhalt der Beispiele für eine slt.pätere, sprachunabhängigen Ebene behandelt. Wiederholen Sie die verknüpften Beispielthemen oben, um sprachspezifische Implementierungen und verwandte Details zu erhalten und zu sehen, wie die in diesem Thema beschriebenen Methoden verwendet werde.
Demonstriert
Dieses Beispiel wird in die folgenden Hauptabschnitte unterteilt und enthält Web-API-Funktionen und -Aktionen, die in den entsprechenden Themenabschnitten detailliert behandelt werden.
Themenabschnitt |
Zugeordnete Themen |
---|---|
Beispieldaten |
|
Verwenden von ungebundenen Funktion ohne Parameter |
|
Verwenden von ungebundenen Funktion mit Parametern |
|
Verwenden von gebundenen Funktion ohne Parameter |
|
Verwenden von ungebundenen Aktionen mit Parametern |
|
Verwenden von gebundenen Aktionen mit Parametern |
|
Verwenden von gebundenen benutzerdefinierten Aktionen mit Parametern |
|
Verwenden von ungebundenen benutzerdefinierten Aktionen mit Parametern |
|
Behandlung von Ausnahmen für benutzerdefinierte Aktionen |
Die folgenden Abschnitte enthalten eine kurze Diskussion zu den ausgeführten Dynamics 365 Web-API-Vorgängen, sowie den entsprechenden HTTP-Nachrichten und den Ausgaben, die der Konsolen zugeordnet sind.
Beispieldaten
Um die ordnungsgemäße Ausführung der Vorgänge in diesem Beispiel, erstellen Sie zuerst Beispieldaten auf dem Dynamics 365-Server. Diese Beispieldaten werden vom Server gelöscht, es sei denn, der Benutzer entscheidet sich, sie nicht zu löschen. Die Daten in diesem Beispiel werden wie folgt einzeln erstellt.
Erstellen Sie ein Konto (z. B.: Fourth Coffee) und ordnen Sie es einem Vorfall zu, der drei 30-minütige Aufgaben hat (insg. 90 Minuten). Nachdem die Aufgaben erstellt sind, werden sie als abgeschlossen markiert. Der Vorgang berechnet die gesamte Zeit, die zur Ausführung dieser drei Aufgaben erforderlich ist.
{ title: "Sample Case", "customerid_account@odata.bind": accountUri, Incident_Tasks: [ { subject: "Task 1", actualdurationminutes: 30 }, { subject: "Task 2", actualdurationminutes: 30 }, { subject: "Task 3", actualdurationminutes: 30 } ] };
Erstellen Sie ein Konto und ordnen Sie es einer Verkaufschance zu. Diese Verkaufschance wird im Beispielvorgang als gewonnen markiert.
{ name: "Sample Account for WebAPIFunctionsAndActions sample", opportunity_customer_accounts: [{ name: "Opportunity to win" }] };
Erstellen Sie eine Brief-Aktivität. Der Brief wird im Beispielvorgang in die aktuelle Warteschlange des Benutzers hinzugefügt.
{ description: "Example letter" }
Erstellen Sie einen Kontakt, der mit einer benutzerdefinierte Aktionen sample_AddNoteToContact im Beispielvorgang verwendet wird.
{ firstname: "Jon", lastname: "Fogg" }
Beispielvorgänge
Die Beispielvorgänge in diesem Thema werden folgendermaßen organisiert.
Verwenden von Funktionen: Diese Vorgänge zeigen gebundene und ungebundene Funktionen, die Parameter akzeptieren oder nicht.
Verwenden von Aktionen: Diese Vorgänge zeigen gebundene und ungebundene Aktionen, die Parameter akzeptieren oder nicht.
Benutzerdefinierte Aktionen: Diese Vorgänge zeigen gebundene und ungebundene Aktionen und die Verarbeitung von benutzerdefinierte Fehlerausnahmen.
Verwenden von Funktionen
Funktionen sind Vorgänge, die keine Nebenwirkungen haben. Eine Funktion kann an eine Entitätsinstanz oder eine Entitätssammlung gebunden werden. Abfragefunktionen sind niemals gebunden. Weitere Informationen finden Sie unter Nutzen von Web-API-Funktionen. Dieser Abschnitt enthält Beispiele zur Verwendung von gebundenen und ungebundenen Funktionen und zur Übergabe von Parametern.
Verwenden von ungebundenen Funktion ohne Parameter
Verwenden Sie eine ungebundene Feature, um den aktuellen vollständigen Namen des Benutzers aus, wenn Sie das WhoAmI Function ausnutzen. Dieser Vorgang veranschaulicht, wie Sie eine ungebundene Funktion aufrufen, die keine Parameter annimmt. Dieser Vorgang gibt den vollständigen Namen des aktuellen Benutzers zurück.
Abrufen des Anforderung und Antwort für die WhoAmI Function.
HTTP-Anforderung
GET http://cc_WebAPI_ServiceURI/WhoAmI HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8
HTTP-Antwort
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Content-Length: 273
{
"@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#Microsoft.Dynamics.CRM.WhoAmIResponse",
"BusinessUnitId":"0d6cc84a-d3f6-e511-80d0-00155da84802",
"UserId":"b08dc84a-d3f6-e511-80d0-00155da84802",
"OrganizationId":"0f47eae2-a906-4ae4-9215-f09875979f6a"
}
Verwenden von ungebundenen Funktion mit Parametern
Verwenden Sie eine ungebundene Funktion, um den Zeitzonencode abzurufen. Dieser Vorgang veranschaulicht, wie Sie eine ungebundene Funktion aufrufen, die Parameter annimmt. Dieser Vorgang gibt den Zeitzonencode für die angegebene Zeitzone zurück.Weitere Informationen:Übergeben von Parametern an eine Funktion
HTTP-Anforderung
GET http://cc_WebAPI_ServiceURI/GetTimeZoneCodeByLocalizedName(LocalizedStandardName=@p1,LocaleId=@p2)?@p1='Pacific%20Standard%20Time'&@p2=1033 HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8
HTTP-Antwort
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Content-Length: 154
{
"@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#Microsoft.Dynamics.CRM.GetTimeZoneCodeByLocalizedNameResponse",
"TimeZoneCode":4
}
Konsolenausgabe
Unbound function: GetTimeZoneCodeByLocalizedName
Function returned time zone Pacific Standard Time, with code '4'.
Verwenden von gebundenen Funktion ohne Parameter
Verwenden Sie eine gebundene Funktion, um die vollständige Zeit zu erhalten, die für alle Aufgaben eines Vorfalls erforderlich war. Dieser Vorgang veranschaulicht, wie Sie eine gebundene Funktion aufrufen, die keine Parameter annimmt. Dieser Vorgang wird die Gesamtanzahl von Minuten zurück, die der Vorfall für alle zugehörigen Aufgaben erforderte. Die Funktion verwendet außerdem die Vorfalldaten, die Sie für das Beispielprogramm erstellen haben.Weitere Informationen:Gebundene Funktionen
HTTP-Anforderung
GET http://cc_WebAPI_ServiceURI/incidents(3d920da5-fb4a-e611-80d5-00155da84802)/Microsoft.Dynamics.CRM.CalculateTotalTimeIncident() HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8
HTTP-Antwort
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Content-Length: 148
{
"@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#Microsoft.Dynamics.CRM.CalculateTotalTimeIncidentResponse",
"TotalTime":90
}
Konsolenausgabe
Bound function: CalculateTotalTimeIncident
Function returned 90 minutes - total duration of tasks associated with the incident.
Verwenden von Aktionen
Aktionen sind Vorgänge, die Nebenwirkungen zulassen. Ein Aktion ist entweder gebunden oder ungebunden. Weitere Informationen finden Sie unter Nutzen von Web-API-Aktionen. Dieser Abschnitt enthält Beispiele zur Verwendung von gebundenen und ungebundenen Aktionen und zur Übergabe von Parametern. Er zeigt außerdem, wie benutzerdefinierte Aktionen verwenden werden und wie Ausnahmen dieser benutzerdefinierten Aktionen behandelt werden.
Verwenden von ungebundenen Aktionen mit Parametern
Verwenden Sie eine ungebundene Aktion, die einen Satz Parameter verarbeitet. Dieser Vorgang umfasst eine Verkaufschance und markiert sie über den Aufruf von WinOpportunity Action als gewonnen. Der opportunity EntityType wurde als Beispieldaten vorher im Programm erstellt.Weitere Informationen:Ungebundene Aktionen
HTTP-Anforderung
POST http://cc_WebAPI_ServiceURI/WinOpportunity HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8
{
"Status":3,
"OpportunityClose":{
"subject":"Won Opportunity",
"opportunityid@odata.bind":"http://cc_WebAPI_ServiceURI/opportunities(47920da5-fb4a-e611-80d5-00155da84802)"
}
}
HTTP-Antwort
HTTP/1.1 204 No Content
OData-Version: 4.0
Konsolenausgabe
Unbound Action: WinOpportunity
Opportunity won.
Verwenden von gebundenen Aktionen mit Parametern
Verwenden Sie eine gebundene Aktion, die einen Satz Parameter verarbeitet. Dieser Vorgang fügt einen Brief zur Warteschlange des aktuellen Benutzers hinzu. Um dies zu erzielen, verwenden wir die WhoAmI Function und systemuser EntityType, um einen Verweis auf die aktuellen Warteschlange des Benutzers zu erhalten. Wir benötigen auch Verweis auf den letter EntityType. Der Brief wurde als Beispieldaten vorher im Programm erstellt. Anschließend wird die gebundene AddToQueue Action aufgerufen, um den Brief der Warteschlange des aktuellen Benutzers hinzuzufügen.Weitere Informationen:Gebundene Aktionen
HTTP-Anforderung
POST http://cc_WebAPI_ServiceURI/queues(1f7bcc50-d3f6-e511-80d0-00155da84802)/Microsoft.Dynamics.CRM.AddToQueue HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8
Content-Length: 110
{
"Target":{
"activityid":"4c920da5-fb4a-e611-80d5-00155da84802",
"@odata.type":"Microsoft.Dynamics.CRM.letter"
}
}
HTTP-Antwort
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Content-Length: 170
{
"@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#Microsoft.Dynamics.CRM.AddToQueueResponse",
"QueueItemId":"67bdfabd-fc4a-e611-80d5-00155da84802"
}
Konsolenausgabe
Bound Action: AddToQueue
QueueItemId returned from AddToQueue Action: 67bdfabd-fc4a-e611-80d5-00155da84802
Verwenden von benutzerdefinierten Aktionen
Wenn Sie benutzerdefinierte Aktionen in Ihrer Lösung definieren, können Sie diese über die Dynamics 365-Web-API aufrufen. Unabhängig davon, ob die Vorgänge in der benutzerdefinierten Aktion Nebenwirkungen haben, können sie möglicherweise Daten ändern und gelten daher eher als Aktionen und nicht als Funktionen. Es gibt keine Möglichkeit, eine benutzerdefinierte Funktion zu erstellen.Weitere Informationen:Nutzen einer benutzerdefinierten Aktion.
Dieses Beispiel verfügt über zwei benutzerdefinierte Aktionen. Sie erfordern beide Parameter. Eine ist gebunden und die andere ungebunden.
sample_AddNoteToContact: Eine gebundene benutzerdefinierte Aktion, die zwei Parameter verarbeitet. Einer ist ein NoteTitle und der andere ist ein NoteText. Diese benutzerdefinierte Aktion für einem contact EntityType eine Notiz hinzu. Unten finden Sie ein Screenshot der Informationen-Seite dieser benutzerdefinierten Aktion.
sample_CreateCustomer: Eine ungebundene benutzerdefinierte Aktion, die verschiedene Parameter erfordert (je nach Typ des zu erstellenden Kunden). Wenn beispielsweise AccountType "Firma" ist, dann ist nur der AccountName-Parameter erforderlich. Wenn AccountType "Kontakt" ist, sind die Parameter ContactFirstName und ContactLastName erforderlich. Unten finden Sie ein Screenshot der Informationen-Seite dieser benutzerdefinierten Aktion.
Verwenden von gebundenen benutzerdefinierten Aktionen mit Parametern
Dieses Beispiel ruft die benutzerdefinierte Aktion sample_AddNoteToContact auf, die an Kontaktentität mit den benötigten Parametern gebunden ist. Diese benutzerdefinierte Aktion für eine Notiz zu einem vorhanden Kontakt hinzu. Diese Aktion gibt eine Entität mit einer annotationid-Eigenschaft zurück. Um das Hinzufügen der Notiz anzuzeigen, wird die annotationid verwendet, um Informationen zur Notiz anzufordern.
Die Anfrage und Antwort der Aktion.
HTTP-Anforderung
POST http://cc_WebAPI_ServiceURI/contacts(4d920da5-fb4a-e611-80d5-00155da84802)/Microsoft.Dynamics.CRM.sample_AddNoteToContact HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8
Content-Length: 80
{
"NoteTitle":"The Title of the Note",
"NoteText":"The text content of the note."
}
HTTP-Antwort
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Content-Length: 149
{
"@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#annotations/$entity",
"annotationid":"ba146d0b-fd4a-e611-80d5-00155da84802"
}
Die Anfrage und Antwort der Notiz (Annotation).
HTTP-Anforderung
GET http://cc_WebAPI_ServiceURI/annotations(ba146d0b-fd4a-e611-80d5-00155da84802)?$select=subject,notetext&$expand=objectid_contact($select=fullname) HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8
HTTP-Antwort
HTTP/1.1 200 OK
OData-Version: 4.0
Content-Length: 450
{
"@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#annotations(subject,notetext,objectid_contact,objectid_contact(fullname))/$entity",
"@odata.etag":"W/\"622978\"",
"subject":"The Title of the Note",
"notetext":"The text content of the note.",
"annotationid":"ba146d0b-fd4a-e611-80d5-00155da84802",
"objectid_contact":{
"@odata.etag":"W/\"622968\"",
"fullname":"Jon Fogg",
"contactid":"4d920da5-fb4a-e611-80d5-00155da84802"
}
}
Konsolenausgabe
Custom action: sample_AddNoteToContact
A note with the title 'The Title of the Note' and the content 'The text content of the note.' was created and associated with the contact Jon Fogg.
Verwenden von ungebundenen benutzerdefinierten Aktionen mit Parametern
Dieser Vorgang ruft die benutzerdefinierte Aktion sample_CreateCustomer auf, um einen "Konto"-Kunden zu erstellen. Die erforderliche Parameter sind CustomerType mit dem Wert account.
HTTP-Anforderung
POST http://cc_WebAPI_ServiceURI/sample_CreateCustomer HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8
Content-Length: 103
{
"CustomerType":"account",
"AccountName":"Account Customer Created in WebAPIFunctionsAndActions sample"
}
HTTP-Antwort
HTTP/1.1 204 No Content
OData-Version: 4.0
Behandlung von Ausnahmen für benutzerdefinierte Aktionen
Dieses Beispiel wird angezeigt, das benutzerdefinierte Aktionen benutzerdefinierten Fehlermeldungen zurückgeben können. Sie verarbeiten benutzerdefinierte Ausnahmen genauso wie Standardausnahmen. Um die benutzerdefinierte Fehlermeldung aus der angepassten Aktion sample_CreateCustomer zu erhalten, erstellt dieses Beispiel einen "Kontakt"-Kunden. Allerdings übergeben wir absichtlich die falsche Parameter für den CustomerType-Parameter. Dieser Vorgang fängt dann die Ausnahme ab und zeigt die Fehlermeldung an. Dann führt das Beispielprogramm fort.
HTTP-Anforderung
POST http://cc_WebAPI_ServiceURI/sample_CreateCustomer HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Content-Type: application/json; charset=utf-8
Content-Length: 103
{
"CustomerType":"contact",
"AccountName":"Account Customer Created in WebAPIFunctionsAndActions sample"
}
HTTP-Antwort
HTTP/1.1 500 Internal Server Error
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Content-Length: 2760
{
"error":{
"code":"",
"message":"ContactFirstName and ContactLastName are required when CustomerType is contact.",
"innererror":{
"message":"ContactFirstName and ContactLastName are required when CustomerType is contact.",
...[truncated]
}
}
}
Konsolenausgabe
Expected custom error: ContactFirstName and ContactLastName are required when CustomerType is contact.
Siehe auch
Verwenden der Microsoft Dynamics 365-Web-API
Nutzen von Web-API-Funktionen
Nutzen von Web-API-Aktionen
Internet-API-Funktionen- und Aktionen-Beispiel (C#)
Beispiele von Web API-Funktionen und Aktionen (clientseitiges JavaScript)
Microsoft Dynamics 365
© 2017 Microsoft. Alle Rechte vorbehalten. Copyright