sendMessage(recipientId, message, options) {
    const recipient = this._createRecipient(recipientId);
    const messagingType = options && options.messagingType;
    const notificationType = options && options.notificationType;
    const tag = options && options.tag;
    const onDelivery = options && options.onDelivery;
    const onRead = options && options.onRead;
    const reqBody = {
      recipient,
      message,
      messaging_type: messagingType || 'RESPONSE'
    };

    // These are optional params, only add them to the request body
    // if they're defined.
    if (notificationType) {
      reqBody.notification_type = notificationType
    }
    if (tag) {
      reqBody.tag = tag
    }
    const req = () => (
      this.sendRequest(reqBody).then((json) => {
        if (typeof onDelivery === 'function') {
          this.once('delivery', onDelivery);
        }
        if (typeof onRead === 'function') {
          this.once('read', onRead);
        }
        return json;
      })
    );
    if (options && options.typing) {
      const autoTimeout = (message && message.text) ? message.text.length * 10 : 1000;
      const timeout = (typeof options.typing === 'number') ? options.typing : autoTimeout;
      return this.sendTypingIndicator(recipientId, timeout).then(req);
    }
    return req();
  }
Use this method if you want to send a custom message object.
@param {Recipient|String} recipientId Recipient object or ID.
@param {Message} message The message to send.
@param {SendMessageOptions} [options]