SetComposeMessageData Operation

After opening an object, for instance, a service request, the agent will be able to open compose message from a Smart Action. A compose message panel is opened where the agent can send messages. This action is to programmatically set data of the compose message action panel. This operation will enable the user to set CC, BCC, To Address fields if available and also set Message Subject and Body. It also enables the user to set values of custom fields if added to the message layout through extensibility.

Here are the Compose Message smart actions types which must be passed while subscribing this event:

  • Compose Internal note (Message type: ORA_SVC_INTERNAL_NOTE)
  • Compose Email (Message type: ORA_SVC_EMAIL )
  • Compose Web Message (Message type: ORA_SVC_WEB)
  • Capture Customer Message(Message type: ORA_SVC_CUSTOMER_ENTRY)
  • Compose Message (Super set of all the previous. Message type: ANY)
    Note: OnAfterMessageSend is an event listenable from RecordContext.

Here's the request structure of the operation:

interface IComposeMessageDataRequest {
      setToAddress(partyName: string, partyId: string, emailAddress: string, viaId?: string): void;
      setCCAddress(partyName: string, partyId: string, emailAddress: string, viaId?: string): void;
      setBCCAddress(partyName: string, partyId: string, emailAddress: string, viaId?: string): void;
      setSubject(subject: string): void;
      setMessageBody(messageContent: string): void;
      setFieldValue(fieldName: string, fieldValue: string): void;
    }

Here's a Typescript example for performing the SetComposeMessageData operation on the Compose Email Smart Action:

/// <reference path="uiEventsFramework.d.ts"/>     
const frameworkProvider: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID');
const tabContext = await frameworkProvider.getTabContext();
const recordContext = await tabContext.getActiveRecord();
const srequestObject: IComposeMessageActionRequest = frameworkProvider.requestHelper.createPublishRequest('cxEventBusSetComposeMessageDataOperation') as IComposeMessageActionRequest;
    srequestObject.setMessageType('ORA_SVC_EMAIL');    
const messageData = srequestObject.setMessageData();    
messageData.setCCAddress('Matt Liu', '300100032899579', 'sendmail-test-discard@oracle.com', '');    
 messageData.setBCCAddress('Matt Liu', '300100032899579', 'sendmail-test-discard@oracle.com', '');     
messageData.setSubject('UEF Test');    
messageData.setMessageBody('Message Body UEF Test');    
messageData.setToAddress('Matt Liu', '300100032899579', 'sendmail-test-discard@oracle.com', '');    
messageData.setFieldValue('CustomField', 'CustomValue');    
const response: IOperationResponse = await recordContext.publish(srequestObject);    
console.log('setMessageDataResponse', response) 

Here's a JavaScript example for performing the SetComposeMessageData operation on the Compose Email Smart Action:

const frameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID'); 
    const tabContext = await frameworkProvider.getTabContext();
    const recordContext = await tabContext.getActiveRecord();
    const srequestObject = frameworkProvider.requestHelper.createPublishRequest('cxEventBusSetComposeMessageDataOperation');    srequestObject.setMessageType('ORA_SVC_EMAIL');    
const messageData = srequestObject.setMessageData();    
messageData.setCCAddress('Matt Liu', '300100032899579', 'sendmail-test-discard@oracle.com', '');    
messageData.setSubject('UEF Test');    
messageData.setMessageBody('Message Body UEF Test');    
messageData.setToAddress('Matt Liu', '300100032899579', 'sendmail-test-discard@oracle.com', '');    
messageData.setFieldValue('CustomField', 'CustomValue');    
const response = await recordContext.publish(srequestObject);    
console.log('setMessageDataResponse', response) 
Note: For To, CC, BCC address fields user will can set multiple addresses by calling setCCAddress, setBCCAddress and setToAddress methods respectively, multiple times on the same request payload. Also if the user wants to reset To, CC or BCC fields, the user must call these methods by passing empty values as shown in the following examples:

Here's a Typescript example for resetting the To, CC, BCC fields in the Compose Email Smart Action:

/// <reference path="uiEventsFramework.d.ts"/>     
     const frameworkProvider: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID');
    const tabContext = await frameworkProvider.getTabContext();
    const recordContext = await tabContext.getActiveRecord();
    const srequestObject: IComposeMessageActionRequest = frameworkProvider.requestHelper.createPublishRequest('cxEventBusSetComposeMessageDataOperation') as IComposeMessageActionRequest;
    srequestObject.setMessageType('ORA_SVC_EMAIL');    
const messageData = srequestObject.setMessageData();    
messageData.setCCAddress('', '', '');    
messageData.setBCCAddress('', '', '');     
messageData.setToAddress('', '', '');    
const response: IOperationResponse = await recordContext.publish(srequestObject);    
console.log('setMessageDataResponse', response)  

Here's a JavaScript example for resetting the To, CC, BCC fields in the Compose Email Smart Action::

const frameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID'); 
    const tabContext = await frameworkProvider.getTabContext();
    const recordContext = await tabContext.getActiveRecord();
    const srequestObject = frameworkProvider.requestHelper.createPublishRequest('cxEventBusSetComposeMessageDataOperation');    srequestObject.setMessageType('ORA_SVC_EMAIL');    
const messageData = srequestObject.setMessageData();    
messageData.setCCAddress('', '', '');    
messageData.setBCCAddress('', '', '');     
messageData.setToAddress('', '', '');    
const response = await recordContext.publish(srequestObject);    
console.log('setMessageDataResponse', response)