@Override
 public Observable<List<MessageEntity>> importMessage() {
   return Observable.defer(
       () -> {
         ProcessSms processSms = mPostMessage.getProcessSms();
         List<SmsMessage> smsMessages = processSms.importMessages();
         List<Message> messages = new ArrayList<>();
         for (SmsMessage smsMessage : smsMessages) {
           messages.add(mPostMessage.map(smsMessage));
         }
         return Observable.just(mMessageDataMapper.map(messages));
       });
 }
 @Override
 public Observable<Boolean> publishMessage(List<MessageEntity> messageEntities) {
   return Observable.defer(
       () -> {
         boolean status = true;
         mTweetMessage.tweetMessages(mMessageDataMapper.unmap(messageEntities));
         status = mPostMessage.postMessage(mMessageDataMapper.unmap(messageEntities));
         return Observable.just(status);
       });
 }
  /** Handle receiving SMS message */
  protected void handleSmsReceived(Intent intent) {

    String body;
    Bundle bundle = intent.getExtras();
    Message msg = new Message();

    log("handleSmsReceived() bundle " + bundle);

    if (bundle != null) {
      SmsMessage[] messages = getMessagesFromIntent(intent);
      sms = messages[0];
      if (messages != null) {

        // extract message details. phone number and the message body
        msg.messageFrom = sms.getOriginatingAddress();
        msg.messageDate = new Date(sms.getTimestampMillis());

        if (messages.length == 1 || sms.isReplace()) {
          body = sms.getDisplayMessageBody();

        } else {
          StringBuilder bodyText = new StringBuilder();
          for (int i = 0; i < messages.length; i++) {
            bodyText.append(messages[i].getMessageBody());
          }
          body = bodyText.toString();
        }
        msg.messageBody = body;
        msg.messageUuid = new ProcessSms(mContext).getUuid();
        msg.messageType = Message.Type.PENDING;
        msg.status = Message.Status.UNCONFIRMED;
      }
      log("handleSmsReceived() messagesUuid: " + messagesUuid);
      // Log received SMS
      mFileManager.appendAndClose(
          getString(R.string.received_msg, msg.messageBody, msg.messageFrom));

      // Route the SMS
      if (App.getTwitterInstance().getSessionManager().getActiveSession() != null) {
        boolean status = mTweetMessage.routeSms(msg);
        showNotification(status);
      }

      boolean status = mPostMessage.routeSms(msg);
      showNotification(status);
    }
  }