This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.

Using the Gmail Connector

In this tutorial, you use the Gmail connector to send an email containing the response received from SettlePaymentEP in the previous tutorial.

See the following topics for a description of the concepts that you need to know when creating ESB artifacts:

Before you begin,

  1. Install Oracle Java SE Development Kit (JDK) version 1.8.* and set the JAVA_HOME environment variable.
  2. Download the WSO2 EI ZIP file from here, and then extract the ZIP file. 
    The path to this folder will be referred to as <EI_HOME> throughout this tutorial.
  3. Select and download the relevant EI tooling ZIP file based on your operating system from here and then extract the ZIP file.
    The path to this folder will be referred to as <EI_TOOLING> throughout this tutorial.
  4. If you did not try the Storing and Forwarding Messages tutorial yet, open the WSO2 EI Tooling environment, click File, and then click Import. Next, select Existing WSO2 Projects into workspace under the WSO2 category, click Next and upload the pre-packaged project. This contains the configurations of the Storing and Forwarding Messages tutorial so that you do not have to repeat those steps.
  5. Download the MSF4J service from here and copy the JAR file to <EI_HOME>/wso2/msf4j/deployment/microservicesfolder. The back-end service is now deployed in the MSF4J profile of WSO2 EI.

Let's get started!

Setting up the message broker profile

The message broker profile (which is an instance of WSO2 Message Broker) is shipped with the WSO2 EI product distribution. You need to enable the following configurations to be able to store messages in the broker profile.


Open the <EI_HOME>/conf/jndi.properties file and add the following line after the queue.MyQueue = example.MyQueue line:

queue.PaymentRequestJMSMessageStore=PaymentRequestJMSMessageStore


Creating the credentials for using the Gmail Connector

Creating a Client ID and Client Secret

Follow the stpes below if you want to use your own email address for sending the emails. Instead, you can use the wso2eidemo@gmail email address to send the emails.

  1. As the email sender, navigate to the URL  https://console.developers.google.com/projectselector/apis/credentials  and log in to your google account. 
  2. If you do not already have a project, create a new project and navigate to Create Credential -> OAuth client ID.

    At this point, if the consent screen name is not provided, you will be prompted to do so.

  3. Select the Web Application option and create a client. Provide  https://developers.google.com/oauthplayground  as the redirect URL under Authorized redirect URIs and click on Create. The client ID and client secret will then be displayed. 

    See Gmail API documentation for details on creating the Client ID and Client Secret.

  4. Click on the Library on the side menu, and select Gmail API. Click Enable.

Obtaining the Access Token and Refresh Token

Follow the stpes below if you want to use your own email address for sending the emails. Instead, you can use the wso2eidemo@gmail email address to send the emails.

Follow these steps to automatically refresh the expired token when connecting to Google API:

  1. Navigate to the https://developers.google.com/oauthplayground URL and click on the gear wheel at the top right corner of the screen and select the option Use your own OAuth credentials. Provide the client ID and client secret you previously created and click on Close.
  2. Now under Step 1, select Gmail API v1 from the list of APIs and check all the scopes listed down and click on Authorize APIs. You will then be prompted to allow permission, click on Allow.
  3. In Step 2, click on Exchange authorization code for tokens to generate an display the access token and refresh token. 

Importing the Gmail Connector into EI-Tooling

  1. Right click on Sample Services in the Project Explorer and Select Add or Remove Connector. Then select Add Connector and click Next.
  2. Select Connector Store location and click on Connect to connect to WSO2 Connector store and scroll down and select Gmail from the list of connectors.


    Click Finish

    The connector is now downloaded into your Tooling environment and the connector operations will be available in the Gmail Connector palette.

Let's use these connector operations in the configuration.

Creating the Deployable Artifacts

The connector operations are used in the PaymentRequestProcessingSequence. Select this sequence, and do the following updates:

  1. Add a Property Mediator just before the Call mediator to retrieve and store the patient's email address. 


    With the Property mediator selected, access the Property tab of the mediator and fill in the information in the following table:

    FieldValue
    Property NameSelect New Property
    New Property Nameemail_id
    Property ActionSelect Set
    Value TypeSelect Expression
    Value Expressionjson-eval($.patient.email)
    DescriptionGet Email Id
  2. Add another Property mediator just after the Log mediator to retrieve and store the response sent from SettlePaymentEP. This will be used within the body of the email.

    With the Property mediator selected, access the Property tab and fill in the information in the following table:

    FieldValue
    Property NameSelect New Property
    New Property Namepayment_response
    Property ActionSelect Set
    Value TypeSelect Expression
    Value Expressionjson-eval($.)
    DescriptionGet Payment Response
  3. Drag and drop the init method from the Gmail Connector palette adjoining the Property mediator you added in the previous step.

    With the init method selected, access the Property tab and fill in the information in the following table:

    FieldValue
    Parameter Editor TypeSelect inline
    userIdThe sender's email address (You can use the wso2eidemo@gmail.com email address.)
    accessTokenThe access token you obtained. (If you are using the wso2eidemo@gmail.com email address, use the following access token: ya29.GluDBT4X9M3imgRw07gGICC2GOwriMNX7h-BPQ6XTeGCvTtv7oSVUjYGYvxo3QATxcXruto5YGSX75sdCbOedNdp68zokXrxXFNre_dOGicAK7CVmWmjjZR7bzC8)
    apiUrl https://www.googleapis.com/gmail
    clientIdThe client ID you created. (If you are using the wso2eidemo@gmail.com email address, use the following client ID: 1082612450559-l16pgiv8ucfhdlcocsjtd6lplmg3g9bn.apps.googleusercontent.com)
    clientSecretThe client secret you created. (If you are using the wso2eidemo@gmail.com email address, use the following client secret: 4tHkehumuplmWgehHWOLMVaX)
    refreshTokenThe refresh token you obtained. (If you are using the wso2eidemo@gmail.com email address, use the following refresh token: 1/d_c0elNQjnKSQKcdPX2-pIIZHOJ5MlBXkrmLXXQHF14 )
  4. Add the sendMail method from the Gmail Connector palette and access the Property tab and fill in the information in the following table:

    FieldValueDescription
    Parameter Editor TypeSelect inline
    to{$ctx:email_id}Retreives the patient email address that was stored in the relevant Property mediator.
    subjectPayment StatusThe subject line in the email that is sent out.
    messageBody{$ctx:payment_response}Retreives the payment response that was stored in the relevant Property mediator.

    The updated PaymentRequestProcessingSequence should now look like this:

  5. Save the updated sequence configuration.
  6. Right click on SampleServicesConnectorExporter and navigate to New -> Add/Remove Connectors and select Add connector and click on Next. Select Workspace to list down the connectors that were added.


    Select the Gmail connector from the list and click OK and then Finish.

Packaging the artifacts

Since you added a connector to the Conector Exporter Project, this will need to be packaged into our existingCApp.

Package the C-App names SampleServicesCompositeApplication project with the artifacts created. 

Ensure the following artifact check boxes are selected in the Composite Application Project POM Editor.

  • SampleServices
    • HealthcareAPI
    • ClemencyEP
    • GrandOakEP
    • PineValleyEP
    • ChannelingFeeEP
    • SettlePaymentEP
  • SampleServicesRegistry
  • SampleServicesConnectorExporter

Starting the Message Broker runtime 

Start the message broker profile as follows:

  1. Open a terminal and navigate to the <EI_HOME>/wso2/broker/bin directory.
  2. Start the runtime by executing the message broker startup script as shown below.

    sh wso2server.sh 

The message broker profile is now ready to receive messages from the ESB profile.

Starting the MSF4J profile

To be able to send requests to the back-end service (which is an MSF4J service deployed in MSF4J profile), you need to first start the MSF4J runtime:

  1. Open a terminal and navigate to the <EI_HOME>/wso2/msf4j/bin directory.
  2. Start the runtime by executing the MSF4J startup script as shown below.

    sh carbon.sh 

The Healthcare service is now active and you can start sending requests to the service.

Starting the ESB runtime and deploying the artifacts

On the Servers tab, expand the WSO2 Carbon server, right-click SampleServicesCompositeApplication, and choose Redeploy. The Console window will indicate that the CApp has been deployed successfully.

If you do not have a server added in Eclipse, refer this tutorial.

You can also deploy the artifacts to the ESB profile of WSO2 EI using a Composite Application Archive (CAR) file.

Sending requests to the ESB

  1. Create a JSON file names request.json with the following request payload. Make sure you provide a valid email address so that you can test the email being sent to the patient. 

    {
    "name": "John Doe",
    "dob": "1940-03-19",
    "ssn": "234-23-525",
    "address": "California",
    "phone": "8770586755",
    "email": "johndoe@gmail.com",
    "doctor": "thomas collins",
    "hospital": "grand oak community hospital",
    "cardNo": "7844481124110331",
    "appointment_date": "2017-04-02"
    }
  2. Open a command line terminal and execute the following command from the location where request.json file you created is saved:

    curl -v -X POST --data @request.json http://localhost:8280/healthcare/categories/surgery/reserve --header "Content-Type:application/json"

    This is derived from the URI-Template defined when creating the API resource.

    http://<host>:<port>/categories/{category}/reserve

    You will see the response as follows:

    {"message":"Payment request successfully submitted. Payment confirmation will be sent via email."}

    An email will be sent to the provided patient email address with the following details:

    Subject: Payment Status
     
    Message:
    {"appointmentNo":2,"doctorName":"thomas collins","patient":"John
    Doe","actualFee":7000.0,"discount":20,"discounted":5600.0,"paymentID":"8458c75a-c8e0-4d49-8da4-5e56043b1a20","status":"Settled"}

You have now explored how to import the Gmail connector to the ESB profile of WSO2 EI and then use the connector operation to send emails.