1

Ich baue ein Abonnement für Seiten auf einer Website. So kann ein Abonnent über ein Formular posten und zu einer Marketing-Liste in Dynamics 365 Online hinzugefügt werden.Dynamics 365 Web API E-Mail senden

Von einem geplanten Job auf der Website mache ich dann eine Anfrage der Kontakte in einer Marketing-Liste.

Dann muss ich ihnen eine E-Mail senden, dass eine neue Seite mit diesen Eigenschaften und einem Link zu dieser Seite erstellt wurden.

Also ich möchte diese Verantwortung Dynamics 365 Online machen.

Also ich benutze die Web-API und die Aktion: SendEmailFromTemplate Nicht sicher, ob ich diese Aktion verwenden kann oder wenn ich eine benutzerdefinierte Aktion erstellen muss.

Ich müsste Daten wie URL der Seite, Titel und Text übergeben. Oder nur eine Zeichenfolge - der Text der E-Mail-Nachricht, die all dies enthält.

Also ich habe eine E-Mail-Vorlage im CRM erstellt und es semse wie der Code findet es!

Dies ist die Aktion Ich glaube, ich bin nach: https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.sendemailfromtemplaterequest.aspx?cs-save-lang=1&amp

aber ich werde mit dem Web-API: https://msdn.microsoft.com/en-us/library/mt607523.aspx

Wenn ich die Dokumentation auf dem SOAP-Service überprüfe tatsächlich Beispiele gibt es .

Also habe ich versucht, dies:

dynamic regarding = new ExpandoObject(); 
var oppIndexer = regarding as IDictionary<string, Object>; 
oppIndexer["contactid"] = contact.ContactId; //contact that will recive the 
email. 
oppIndexer["@odata.type"] = "Microsoft.Dynamics.CRM.contact"; 

dynamic target = new ExpandoObject(); 
var targetIndexer = target as IDictionary<string, Object>; 
targetIndexer["torecipients"] = "[email protected]"; 
targetIndexer["sender"] = "[email protected]"; 
targetIndexer["inreplyto"] = "[email protected]"; 
targetIndexer["subject"] = "This is the subject"; 
targetIndexer["description"] = "This should be the body of the email"; 
targetIndexer["directioncode"] = true; //outgoing 
targetIndexer["@odata.type"] = "Microsoft.Dynamics.CRM.email"; 

dynamic sendEmailFromTemplate = new ExpandoObject(); 
sendEmailFromTemplate.TemplateId = Guid.Parse("my-email-template-guid-inserted-here"); 
sendEmailFromTemplate.Regarding = regarding; 
sendEmailFromTemplate.Target = target; 

api.ExecuteAction("SendEmailFromTemplate", sendEmailFromTemplate); 

Aber ich Ausnahme erhalten: „Die E-Mail mindestens einen Empfänger haben muss, bevor sie gesendet werden können,“ wenn ich es posten.

Was könnte das Problem sein?

ich denke, die Dokumentation an: https://msdn.microsoft.com/en-us/library/mt607523.aspx

nur erklären, dass der Typ für Ziel und bezüglich des Typs „crmbaseentity“ sein sollte. Eine Basisklasse ...

Wer weiß, was das verursachen könnte?

Dies ist der E-Mail-Entity: https://msdn.microsoft.com/en-us/library/mt608007.aspx

für das Feld „torecipients“ man lesen können: „Zeigt die E-Mail-Adressen an die Empfänger entsprechend“. Also ich bin mir nicht sicher, dass das das Feld ist, das ich verwenden sollte. Wenn der Text wäre "Die Empfänger mit", "Trennzeichen, das die Nachricht erhalten wird" wäre ich sicherer, dass ich dieses Feld verwenden müsste.

Update: Okey, so ist es das, was Sie auf dem Laufenden:

{ 
"email_activity_parties": [ 
    { "[email protected]": "/systemusers(852a441c-b544-e611-80e3-c4346bc5e750)", "participationtypemask": 1 }, 
    { "[email protected]": "/systemusers(852a441c-b544-e611-80e3-c4346bc5e750)", "participationtypemask": 2 } 
    ], 
"description": "description lorem ipsum", 
"subject": "rubrik", 
"[email protected]": "/opportunities(e9e6eb64-9c4c-e611-80e4-c4346bc58294)" 
} 

Wenn ich würde das so zu ändern, es mein Bedürfnis entspricht. Ich glaube nicht, dass ich Gelegenheiten nutzen werde. Oder muss ich? Es gibt drei Parameter für SendEmailFromTemplate Action: https://msdn.microsoft.com/en-us/library/mt607523.aspx TemplateId, In Bezug und Ziel.Ich änderte den Code ein bisschen unter (ungetestet)

{ 
"TemplateId": "id-for-email-template", 
"Regarding": [ { "[email protected]": "/contacts(contact-guid-X)" } ], 
"Target": { 
    "email_activity_parties": [ 
     { "[email protected]": "/systemusers(systemuser-guid-Y)", "participationtypemask": 1 }, //1 is "sender" 
     { "[email protected]": "/contacts(contact-guid-X)", "participationtypemask": 2 } // 2 is "to" 
     ], 
    "description": "description lorem ipsum", 
    "subject": "rubrik", 
    "[email protected]": "/contacts(contact-guid-X)" 
    } 
} 

Ich werde so etwas wie dies ausprobieren ..

+0

Ich muss @ odata.type setzen ich denke ... –

Antwort

0

E-Mail eine Tätigkeit ist, werden alle Aktivitäten in Aktivität Pointer + Aktivität Partei geteilt werden. What you have to do wird der gleiche Kontakt, den Sie für regardingobject verwenden, in toParty eingefügt.

//create activityparty 
Entity Fromparty = new Entity("activityparty"); 
Entity Toparty = new Entity("activityparty"); 

//To set to Contact 
Toparty["partyid"]= new EntityReference("contact", _ contactid)); 

//From set to User 
Fromparty["partyid"]= new EntityReference("systemuser", _From)); 

//create email Object and set attributes 
Entity email = new Entity("email"); 

email["from"] = new Entity[] { Fromparty }; 
email["to"] = new Entity[] { Toparty }; 
email["directioncode"] = true; 

//setting the Regarding as Contact 
email["regardingobjectid"] = new EntityReference("contact", _contactid); 

Ignoretorecipients Feld der to nur.

Fehler The e-mail must have at least one recipient before it can be sent wird weggehen.

Update:

Wir haben Navigationseigenschaft zu verwenden, in Bezug auf die Web api.

+0

Ich habe viele Beispiele gesehen, aber keine Web-API-Beispiele. Wie würde ein JSON-Post aussehen? –

+0

Ok, ich habe ein Update bei meinem Hauptpost gemacht. Ich denke, ich müsste ein paar Dinge ändern. Wird ein paar Tests machen. –

Verwandte Themen