Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-18793

Slack Consumer: DMs (IM) do not have conversation name set.

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Do
    • Major
    • camel-k-future
    • None
    • Camel, Camel-K
    • None
    • False
    • None
    • False
    • % %
    • Todo

    Description

      Following simple route:

      from(slackEndpoint)
          .process(ex -> ex.getIn().setBody(ex.getIn().getBody(Message.class).getText()))
          .log("${body}"); 

      where slackEndpoint is:

      String slackEndpoint = String.format("slack:%s?token=RAW(%s)&conversationType=%s",
          IM_CHANNEL_NAME, slack.account().token(), ConversationType.IM); 

      will fail for every IM channel with NPM. Stacktrace:

      2022-03-31 12:44:44,688 ERROR [org.apa.cam.imp.eng.AbstractCamelContext] (main) Error starting CamelContext (camel-1) due to exception thrown: null: java.lang.NullPointerException
         at org.apache.camel.component.slack.SlackConsumer.lambda$getChannelId$2(SlackConsumer.java:153)
         at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
         at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1632)
         at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
         at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
         at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
         at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
         at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
         at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
         at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
         at org.apache.camel.component.slack.SlackConsumer.getChannelId(SlackConsumer.java:155)
         at org.apache.camel.component.slack.SlackConsumer.doStart(SlackConsumer.java:60) 

      Issue is that IMs do not have name set. I.E.:

      Conversation(enterpriseId=null, id=1111111111, name=null, created=22222222, creator=null, unlinked=null, nameNormalized=null, pendingShared=null, lastRead=null, topic=null, purpose=null, previousNames=null, numOfMembers=null, latest=null, locale=null, unreadCount=null, unreadCountDisplay=null, user=3333333333, isUserDeleted=false, priority=0.0, dateConnected=null, sharedTeamIds=null, parentConversation=null, pendingConnectedTeamIds=null, conversationHostId=null, internalTeamIds=null, connectedTeamIds=null, connectedLimitedTeamIds=null, isChannel=false, isGroup=false, isIm=true, isArchived=false, isGeneral=false, isReadOnly=false, isThreadOnly=false, isNonThreadable=false, isShared=false, isExtShared=false, isOrgShared=false, isPendingExtShared=false, globalShared=false, orgDefault=false, orgMandatory=false, isMoved=null, isMember=false, open=false, isPrivate=false, isMpim=false, isStarred=false) 

      So this method always return NPM for IM:
      https://github.com/apache/camel/blob/80b92e3624ae5db59a1a24a441f1b10b39eaa1a5/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackConsumer.java#L152

       

      Other conversationTypes (PUBLIC_CHANNEL, PRIVATE_CHANNEL, MPIM) have name correctly set and the route above works fine with them.

      Attachments

        Activity

          People

            Unassigned Unassigned
            mmajerni@redhat.com Mario Majernik
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: