How to set `You and moderator can reply` in bot when posting proactive message to channels?

%3CLINGO-SUB%20id%3D%22lingo-sub-2484302%22%20slang%3D%22en-US%22%3EHow%20to%20set%20%60You%20and%20moderator%20can%20reply%60%20in%20bot%20when%20posting%20proactive%20message%20to%20channels%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2484302%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20there%2C%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20am%20currently%20developing%20a%20bot%20that%20posts%20proactive%20message%20to%20channels.%20My%20client%20wants%20me%20to%20set%20%60No%20reply%60%20or%20%60You%20and%20moderator%20can%20reply%60%20on%20the%20message%20that%20posted%20from%20the%20bot%20proactively.%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EWhat%20I%20tried%20so%20far%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-javascript%22%3E%3CCODE%3E%2F%2F%20post%20message%20to%20channels%0Aconst%20credentials%20%3D%20new%20MicrosoftAppCredentials(process.env.MicrosoftAppId%2C%20process.env.MicrosoftAppPassword)%3B%0Aconst%20client%20%3D%20new%20ConnectorClient(credentials%2C%20%7B%20baseUri%3A%20serviceUrl%20%7D)%3B%0Aconst%20message%20%3D%20MessageFactory.text(inMessage)%3B%0A%0Alet%20approveResult%20%3D%20false%3B%0Alet%20MessageActivityId%20%3D%20%22%22%3B%0A%0Aconst%20conversationParams%20%3D%20%7B%0A%20%20%20%20isGroup%3A%20true%2C%0A%20%20%20%20bot%3A%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20process.env.MicrosoftAppId%2C%0A%20%20%20%20%20%20%20%20name%3A%20process.env.BotName%0A%20%20%20%20%7D%2C%0A%20%20%20%20conversationType%3A%20'channel'%2C%0A%20%20%20%20channelData%3A%20%7B%0A%20%20%20%20%20%20%20%20channel%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20id%3A%20teamsChannelId%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20activity%3A%20message%0A%7D%3B%0A%0Aconst%20msRes%20%3D%20await%20client.conversations.createConversation(conversationParams).catch(e%20%3D%26gt%3B%20console.log(e))%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20tried%20to%20post%20the%20message%20first%2C%20and%20immediately%20update%20the%20activity%20and%20set%20the%20type%20as%20%60ActivityTypes.EndOfConversation%60.%20However%2C%20it%20doesn't%20work%20at%20all.%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-javascript%22%3E%3CCODE%3Econst%20tmpResult%20%3D%20await%20client.conversations.updateActivity(teamsChannelId%2C%20msRes.activityId%2C%20%7Btype%3A%20ActivityTypes.EndOfConversation%7D)%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EError%20form%20above%20updateActivity%20code%3A%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3ERestError%3A%20Unknown%20activity%20type%0Aat%20...(skipped%20for%20paths)%0A%0A%7B%0A%20%20%20%20code%3A%20'BadArgument'%2C%0A%20%20%20%20statusCode%3A%20400%2C%0A%20%20%20%20request%3A%20WebResource%20%7B%0A%20%20%20%20%20%20%20%20streamResponseBody%3A%20false%2C%0A%20%20%20%20%20%20%20%20url%3A%20'https%3A%2F%2F%7Bservice_url%7D%2F%7Bchannel_id%7D%2Factivities%2F%7BmessageActivityId%7D'%2C%0A%20%20%20%20%20%20%20%20method%3A%20'PUT'%2C%0A%20%20%20%20%20%20%20%20headers%3A%20HttpHeaders%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20_headersMap%3A%20%5BObject%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20body%3A%20'%7B%22type%22%3A%22endOfConversation%22%7D'%2C%0A%20%20%20%20%20%20%20%20query%3A%20undefined%2C%0A%20%20%20%20%20%20%20%20formData%3A%20undefined%2C%0A%20%20%20%20%20%20%20%20withCredentials%3A%20false%2C%0A%20%20%20%20%20%20%20%20abortSignal%3A%20undefined%2C%0A%20%20%20%20%20%20%20%20timeout%3A%200%2C%0A%20%20%20%20%20%20%20%20onUploadProgress%3A%20undefined%2C%0A%20%20%20%20%20%20%20%20onDownloadProgress%3A%20undefined%2C%0A%20%20%20%20%20%20%20%20proxySettings%3A%20undefined%2C%0A%20%20%20%20%20%20%20%20keepAlive%3A%20undefined%2C%0A%20%20%20%20%20%20%20%20agentSettings%3A%20undefined%2C%0A%20%20%20%20%20%20%20%20operationSpec%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20httpMethod%3A%20'PUT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20path%3A%20'v3%2Fconversations%2F%7BconversationId%7D%2Factivities%2F%7BactivityId%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20urlParameters%3A%20%5BArray%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20requestBody%3A%20%5BObject%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20responses%3A%20%5BObject%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20serializer%3A%20%5BSerializer%5D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20response%3A%20%7B%0A%20%20%20%20%20%20%20%20body%3A%20'%7B%22error%22%3A%7B%22code%22%3A%22BadArgument%22%2C%22message%22%3A%22Unknown%20activity%20type%22%7D%7D'%2C%0A%20%20%20%20%20%20%20%20headers%3A%20HttpHeaders%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20_headersMap%3A%20%5BObject%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20status%3A%20400%0A%20%20%20%20%7D%2C%0A%20%20%20%20body%3A%20%7B%0A%20%20%20%20%20%20%20%20error%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20code%3A%20'BadArgument'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20message%3A%20'Unknown%20activity%20type'%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EIs%20there%20any%20method%20that%20allows%20me%20to%20do%20so%3F%20Thanks.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2484302%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EBot%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EBot%20Framework%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EDeveloper%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EMicrosoft%20Teams%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Eteams.js%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2492112%22%20slang%3D%22en-US%22%3ERe%3A%20How%20to%20set%20%60You%20and%20moderator%20can%20reply%60%20in%20bot%20when%20posting%20proactive%20message%20to%20channels%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2492112%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F919444%22%20target%3D%22_blank%22%3E%40ssywilson%3C%2FA%3E%2C%20Could%20you%20please%20go%20through%20this%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fmicrosoftteams%2Fplatform%2Fresources%2Fbot-v3%2Fbot-conversations%2Fbots-conv-channel%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3Edocument%3C%2FA%3E%20for%20reference%20and%20please%20confirm%20are%20you%20following%20any%20sample.%3C%2FP%3E%3C%2FLINGO-BODY%3E
New Contributor

Hi there, 

 

I am currently developing a bot that posts proactive message to channels. My client wants me to set `No reply` or `You and moderator can reply` on the message that posted from the bot proactively. 

 

What I tried so far:

// post message to channels
const credentials = new MicrosoftAppCredentials(process.env.MicrosoftAppId, process.env.MicrosoftAppPassword);
const client = new ConnectorClient(credentials, { baseUri: serviceUrl });
const message = MessageFactory.text(inMessage);

let approveResult = false;
let MessageActivityId = "";

const conversationParams = {
    isGroup: true,
    bot: {
        id: process.env.MicrosoftAppId,
        name: process.env.BotName
    },
    conversationType: 'channel',
    channelData: {
        channel: {
            id: teamsChannelId
        }
    },
    activity: message
};

const msRes = await client.conversations.createConversation(conversationParams).catch(e => console.log(e));

 

I tried to post the message first, and immediately update the activity and set the type as `ActivityTypes.EndOfConversation`. However, it doesn't work at all.

const tmpResult = await client.conversations.updateActivity(teamsChannelId, msRes.activityId, {type: ActivityTypes.EndOfConversation})

 

Error form above updateActivity code: 

RestError: Unknown activity type
at ...(skipped for paths)

{
    code: 'BadArgument',
    statusCode: 400,
    request: WebResource {
        streamResponseBody: false,
        url: 'https://{service_url}/{channel_id}/activities/{messageActivityId}',
        method: 'PUT',
        headers: HttpHeaders {
            _headersMap: [Object]
        },
        body: '{"type":"endOfConversation"}',
        query: undefined,
        formData: undefined,
        withCredentials: false,
        abortSignal: undefined,
        timeout: 0,
        onUploadProgress: undefined,
        onDownloadProgress: undefined,
        proxySettings: undefined,
        keepAlive: undefined,
        agentSettings: undefined,
        operationSpec: {
            httpMethod: 'PUT',
            path: 'v3/conversations/{conversationId}/activities/{activityId}',
            urlParameters: [Array],
            requestBody: [Object],
            responses: [Object],
            serializer: [Serializer]
        }
    },
    response: {
        body: '{"error":{"code":"BadArgument","message":"Unknown activity type"}}',
        headers: HttpHeaders {
            _headersMap: [Object]
        },
        status: 400
    },
    body: {
        error: {
            code: 'BadArgument',
            message: 'Unknown activity type'
        }
    }
}

 

Is there any method that allows me to do so? Thanks.

 

3 Replies

@ssywilson, Could you please go through this document for reference and please confirm are you following any sample.

@Ravindra-MSFT Hi, I was following this article to send proactive messages to channels. However, I found that after the bot sends out the proactive message, the channel's chatroom will appear a `Reply` button right below the bot's message.

 

Therefore, I want to ask is there any method to disable the `Reply` button?

 

----

 

Simulation of expected behavior on UI:

2gTTb

 

Simulation of actual behavior on UI:

EnTM2

@ssywilson It is by design, we cannot disable reply button