Я создаю новый канал для интерфейса моего бота, используя пакет NodeJS SDK botframework-directlinejs. Этот канал будет обеспечивать некоторую настраиваемую функциональность обратного канала; однако моему боту необходимо знать, что диалог, с которым он общается, осуществляется через этот канал, прежде чем он сможет создать действие для его использования.
Из того, что я могу узнать из объект 'Activity' в API, поле channelId
должно быть установлено каналом.
Тем не мение,
myChannel.postActivity({
type: 'message',
text: 'hi',
from: {
id: "Node test user",
},
channelId: 'myChannel'
}).subscribe(
id => console.log("Posted activity, assigned ID ", id),
error => console.log("Error posting activity", error)
);
действительно отправляет сообщение «привет» моему боту, но channelId отображается как «прямая линия».
Выполнение той же операции в Fiddler в качестве сообщения https://directline.botframework.com/v3/directline/conversations/<conversationID>/activities
дает такой же ответ.
Я подозреваю, что свойство channelId объекта Activity доступно только для чтения и что API добавляет это значение.
Можно ли установить собственный идентификатор канала?
directline
. У меня есть несколько экземпляров прямой линии для разных целей. Каждого из них я идентифицирую по свойствуuser
. Но это не лучший способ. Буду здесь присматривать, если будет подходящее разрешение. - person Master Chief   schedule 31.08.2018user
или полеfrom
действия, как этоfrom: { id: 'Node test user', channelID: "myChannel" }
. А потом мы можем получить его отactivity.From.Properties["channelID"]
в приложении-боте. - person Fei Han   schedule 31.08.2018from: { ... } as User
, но я бы предпочел более приемлемое решение, если смогу его найти. Мне пришло в голову использовать объектchannelData
в обоих направлениях (тем более, что он имеет типany
). - person BM-   schedule 31.08.2018