1 / 27

Sage CRM Developers Course

Sage CRM Developers Course. Programming for the Advanced Email Manager . Looking ahead to the classes. DP01: Introduction to the Development Partner Program DP02: Entities and the Data Model (Part 1 of 2) DP03: Entities and the Data Model (Part 2 of 2)

ilana
Télécharger la présentation

Sage CRM Developers Course

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sage CRM Developers Course Programming for the Advanced Email Manager

  2. Looking ahead to the classes • DP01: Introduction to the Development Partner Program • DP02: Entities and the Data Model (Part 1 of 2) • DP03: Entities and the Data Model (Part 2 of 2) • DP04: Implementing Screen Based Rules (Part 1 of 2) • DP05: Implementing Screen Based Rules (Part 2 of 2) • DP06: Screen and User Independent Business Rules • DP07: Workflow (Part 1 of 2) • DP08: Workflow (Part 2 of 2) • DP09: Using the API Objects in ASP Pages (Part 1 of 2) • DP10 : Using the API Objects in ASP Pages (Part 2 of 2) • DP11: Using the Component Manager • DP12: Programming for the Advanced Email Manager • DP13: Using the Web Services API • DP14: Using the Web Services API (Part 2 of 2) • DP15: Coding the Web Self Service COM API (Part 1 of 2) • DP16: Coding the Web Self Service COM API (Part 2 of 2) • DP17: Using the .NET API (Part 1 of 2) • DP18: Using the .NET API (Part 2 of 2)

  3. Agenda • How the Email Manager works and processes emails. • Creating a template • Calling new functions • Processing data • Opportunities • Leads • Communications

  4. Getting Started • Do you have an email server to test with? • VPOP • Paul Smith Computing Services • http://www.pscs.co.uk/downloads/vpop3.php • CMAIL • http://www.youngzsoft.net/

  5. Documentation and Resources • System Administration Guide • E-mail Management • E-mail Configuration and E-mail Status • Textpad Snippets • dpp.sagecrm.com

  6. Services • C:\program files\sage\CRM\services\eWareEmailManager.exe • Hkey_Local_Machine, System,Current Control Set, Services • CRMEscalationService • EmailManager

  7. Clean out Old Install Configurations • Open registry • HKEY_LOCAL_MACHINE\SOFTWARE\eWare\Config • Go through each install and blank • EMlogonid • EMPassword • Except for install to be used

  8. Advanced Email Manager • Support for e-mail MAPI and POP • Allows separate inbound/outbound mail servers • Secure SMTP supported • External databases may be read and written to via the custom scripting aspect. • Each mailbox is accessed and controlled by its own thread within the application.

  9. Creating a New Script File • To create a new "Sales" email manager template. • Save the template into the same folder as the other template files. • C:\Program Files\Sage\CRM\Services\CustomPages\Scripts\sales.js • The template will automatically be seen and made available to CRM for use in the • Administration -> E-mail and Documents -> E-mail Management Server Options • when creating a new email address option.

  10. Create a New Function • To allow a new function to be called from within template then you will need to add the following Translation • Caption Family: jsfunctions • Caption Code: SalesEnquiry(); • US Translation: Sales Enquiry • Add other translations as required.

  11. Basic Structure of Template Files • See System Administration Guide • Mytemplate.js • Comments • Initialise Variables • General Event Functions • BeforeMainAction • AfterMainAction • Main Functions (referenced in Config screen) • N.B. MainAction is a reserved word. Do not call any function ‘MainAction’ as this is internally replaced with function called from configuration screen. • Utility Functions

  12. Debugging • Turn on Debugging in System • In Template will use: • MsgHandler.Debug = true;

  13. Objects Available in Template • UserQuery • eWareQuery object using • SELECT * FROM vUsers WHERE • user_emailaddress = FromAddress • OR • user_mobileemail = FromAddress • PersonQuery • eWareQuery object using • SELECT * FROM vEmail, vPerson WHERE email_personid • = pers_personid AND emai_emailaddress = FromAddress • CompanyQuery • eWareQuery object using • SELECT * FROM vEmail, vCompany WHERE • emai_companyid = comp_companyid AND • emai_emailaddress = FromAddress • eWare • eWare object...logged on with admin user (as specified in configuration) • MsgHandler • Debugging control • eMail • interface to the email

  14. Monitoring of Account • Log information C:\Program Files\Sage\CRM\Services\Logs\20100712 CRM MailManager.log **********RulesScript is...******** if (bCond) { AssignedUser = 4; AssignedChannel = 1; SalesEnquiry(); } **********End of RulesScript.**** • Where additional rule sets are used the information passed to the script is changed • **********RulesScript is...******** • if ((!CompanyQuery.EOF) && (CompanyQuery("comp_type")=="Customer") • ) • { • AssignedUser = 4; • AssignedChannel = 1; • CreateRepeatSale(); • bCond=false; • } • if (bCond) • { • AssignedUser = 4; • AssignedChannel = 1; • SalesEnquiry(); • } • **********End of RulesScript.****

  15. Errors in Log • Error detection is based on the status of the script after it runs. The E-mail Management application runs the script and captures the result of the script running. • Log file will contain the script and the error information. The section where the script failed is highlighted. • E-mails that cause the system to fail internally are saved in a rogue e-mail folder, which is located in • ...\Program Files\Sage\CRM\Services\CustomPages\Scripts

  16. Email Object • Properties • Body - String (read/write) • IsHTML - Boolean (read/write) • Subject - String; (read/write) • Priority - Integer (read/write) • Recipients - AddressList Object • SenderName - String (read/write) • SenderAddress - String • DeliveryTime - Date • Attachments - AttachmentList Object • BCC - AddressList Object • CC - AddressList Object • Methods • Send() • AddFile('physical path') • Clear() • Header("named header")

  17. Other Objects • AddressList Properties • Items(index) • Count - Integer(readonly) Methods • AddAddress(Address, Name) • MailAddress Properties • Name - String (read/write) • Address - String (read/write) • AttachmentList Properties • Items(index) • Count - Integer(readonly) • LibraryPath - String • Attachment Properties • Name - String (read/write) • Extension - String (read only) Methods • Save(Name, Path) • SaveAs(Name, Path)

  18. Adding Debugging Messages function BeforeMainAction() { MsgHandler.Log("BeforeMainAction function called"); } function AfterMainAction() { MsgHandler.Log("AfterMainAction function called"); }

  19. Example Main Function • function SalesEnquiry() • { • //add debug message to indicate that function called • //if sender is known contact then log new opportunity • //create communication • //automatically acknowledge email • If sender is unknown then • //create lead • //create communication • //automatically acknowledge email • } • function SalesEnquiry() • { • MsgHandler.Log("SalesEnquiry function called"); • //check if person exists • if (!PersonQuery.EOF) • { • createOppo(); • createComm("Opportunity"); • // sendEmail(); • } • else • { • createLead(); • createComm("Lead"); • // sendEmail(); • } • }

  20. Example Create Opportunity function createOppo() { var myRecord = CRM.CreateRecord("opportunity"); myRecord.Oppo_PrimaryCompanyId= PersonQuery("pers_companyid"); myRecord.Oppo_PrimaryPersonId= PersonQuery("pers_personid"); myRecord.Oppo_AssignedUserId= AssignedUser; myRecord.Oppo_ChannelId= AssignedChannel; myRecord.Oppo_Description= eMail.Subject.substring(0, 39); myRecord.Oppo_Source= "Email"; myRecord.Oppo_Note= "Please see the attached email"; myRecord.Oppo_Status= "In Progress"; myRecord.Oppo_Stage= "Lead"; myRecord.Oppo_Opened = mydate.getVarDate(); myRecord.SetWorkflowInfo("Opportunity Workflow", "Lead") myRecord.SaveChanges(); intOppoRecordID = myRecord.oppo_opportunityid; }

  21. Example Create Lead • function createLead() • { • var myRecord = CRM.CreateRecord("lead"); • myRecord.lead_AssignedUserId= AssignedUser; • myRecord.lead_ChannelId= AssignedChannel; • myRecord.lead_Description= eMail.Subject.substring(0, 39); • myRecord.lead_Source= "Email"; • myRecord.lead_Details= "Please see the attached email"; • myRecord.lead_Status= "In Progress"; • myRecord.lead_Stage= "NewLead"; • myRecord.lead_Opened = mydate.getVarDate(); • myRecord.SetWorkflowInfo("Lead Workflow", "Assigned") • myRecord.SaveChanges(); • intLeadRecordID = myRecord.lead_leadid; • }

  22. Example Send Email function sendEmail(strsubject) { eMail.IsHTML = true; SenderName = eMail.SenderName; SenderAddress = eMail.SenderAddress; MailSubject = eMail.Subject; MailBody = eMail.Body; eMail.Clear(); eMail.Recipients.AddAddress(SenderAddress, SenderName); eMail.SenderName = MsgHandler.EmailAddress; eMail.SenderAddress = MsgHandler.EmailAddress; if (strsubject == "") { eMail.Subject = CRM.GetTrans("GenCaptions", "AutoReply") + ": " + MailSubject } else { eMail.Subject = strsubject; } eMail.Body = CRM.GetTrans("GenCaptions", "Your mail has been logged") + "<BR>" + CRM.GetTrans("GenCaptions", "Thank you") + "<BR><BR>" + CRM.GetTrans("GenCaptions", "Panoply Support") + "<BR><BR>" + MailBody; eMail.Send(); }

  23. Q&A

  24. Looking ahead to the classes • DP01: Introduction to the Development Partner Program • DP02: Entities and the Data Model (Part 1 of 2) • DP03: Entities and the Data Model (Part 2 of 2) • DP04: Implementing Screen Based Rules (Part 1 of 2) • DP05: Implementing Screen Based Rules (Part 2 of 2) • DP06: Screen and User Independent Business Rules • DP07: Workflow (Part 1 of 2) • DP08: Workflow (Part 2 of 2) • DP09: Using the API Objects in ASP Pages (Part 1 of 2) • DP10 : Using the API Objects in ASP Pages (Part 2 of 2) • DP11: Using the Component Manager • DP12: Programming for the Advanced Email Manager • DP13: Using the Web Services API • DP14: Using the Web Services API (Part 2 of 2) • DP15: Coding the Web Self Service COM API (Part 1 of 2) • DP16: Coding the Web Self Service COM API (Part 2 of 2) • DP17: Using the .NET API (Part 1 of 2) • DP18: Using the .NET API (Part 2 of 2)

More Related