Вы можете начать новый разговор, используя соединитель Client в Botframework V4 и Teams Extensions V4. В nodejs вы найдете решение в одном из комментариев для этого выпуска Github . Для тех, кто ищет решение в C # , , есть подробное сообщение в блоге о том, как выполнить это в C # версии бот-фреймворка.
в nodejs:
var conversationReference = TurnContext.getConversationReference(context.activity)
connectorClient = await createConnectorClient(context)
var conversationParameters = {
isGroup: true,
bot: conversationReference.bot,
channelData: (await teamsCtx.getTeamsChannelData()),
tenantId: teamsCtx.tenant.id,
activity: MessageFactory.text("Queue Summary Placeholder") as Activity
} as ConversationParameters
await connectorClient.conversations.createConversation(conversationParameters)
В C #
ConnectorClient _client = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl), await GetMicrosoftAppCredentialsAsync(turnContext), new HttpClient());
var channelData = turnContext.Activity.GetChannelData();
var conversationParameter = new ConversationParameters
{
Bot = turnContext.Activity.Recipient,
IsGroup = true,
ChannelData = channelData,
TenantId = channelData.Tenant.Id,
Activity = MessageFactory.Text(message)
};
var response = await _client.Conversations.CreateConversationAsync(conversationParameter);
Вы можете безопасно отбрасывать отступ "==" в этом приложении. Если бы вам нужно было декодировать текст base-64 обратно в байты, большинство библиотек ожидали бы его, но поскольку вы просто используете результирующую строку в качестве ключа, это не проблема.
Мне нравится Base-64, потому что его ограниченный набор символов менее похож на тарабарщину, но есть также Base-85 . Он использует больше символов и кодирует 4 байта как 5 символов, поэтому вы можете сократить текст до 20 символов.
У меня есть приложение, где я делаю почти именно это. UUID, закодированный в 22 символа Работает нормально. Тем не менее, основная причина, по которой я делаю это таким образом, заключается в том, что идентификаторы отображаются в URI веб-приложения, и 36 символов действительно достаточно велики для того, что появляется в URI. 22 символа по-прежнему довольно длинные, но мы справимся.
Вот код Ruby для этого:
# Make an array of 64 URL-safe characters
CHARS64 = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a + ["-", "_"]
# Return a 22 byte URL-safe string, encoded six bits at a time using 64 characters
def to_s22
integer = self.to_i # UUID as a raw integer
rval = ""
22.times do
c = (integer & 0x3F)
rval += CHARS64[c]
integer = integer >> 6
end
return rval.reverse
end
Это не совсем то же самое, что и кодировка base64, потому что base64 использует символы, которые должны быть экранированы, если бы они появились в пути URI составная часть. Реализация Java, вероятно, будет совсем другой, так как вы
Вы не говорите, какую СУБД вы используете, но кажется, что RAW будет лучшим подходом, если вы заинтересованы в экономии места. Вам просто нужно помнить, что нужно конвертировать для всех запросов, иначе вы рискуете сильно снизить производительность.
Но я должен спросить: действительно ли байты так дороги в вашем регионе?