Как создать экземпляр turnContext с использованием адаптера и запросить в качестве параметров

  if (preg_match("/\b1\b/i", "some content, paragraph 1")) {
    echo "A match was found.";
} else {
    echo "A match was not found.";
}

Где 1 - согласованный термин ...

Это любая помощь?

0
задан Wannabe 18 March 2019 в 18:32
поделиться

1 ответ

На этот вопрос сложно ответить, не зная, как вы планируете использовать код. При этом не так сложно создать новый turnContext, а также обойти processActivity (). Учитывая, как вы ссылаетесь на turnContext и processActivity (), я предполагаю, что вы используете Node SDK. Реализация в C # не будет слишком отличаться.

Вот два варианта, оба с использованием создания нового адаптера, однако, при желании, вы можете также передать уже установленный turnContext:

  1. Использовать .createContext в server.post в индексе Файл .js или
  2. Поддерживайте метод processActivity () в server.post. Это вызывает новый метод "onTurn" в файле bot.js. При этом это позволяет вам контролировать, когда и как осуществляется доступ к новому onTurn.

Вариант 1. В файле index.js вы захотите создать новый адаптер или сделать копию первого в зависимости от ваших потребностей:

const adapter = new BotFrameworkAdapter({
    appId: endpointConfig.appId || process.env.MicrosoftAppId,
    appPassword: endpointConfig.appPassword || process.env.MicrosoftAppPassword
});

const newAdapter = adapter;

или [ 1112]

const adapter = new BotFrameworkAdapter({
    appId: endpointConfig.appId || process.env.MicrosoftAppId,
    appPassword: endpointConfig.appPassword || process.env.MicrosoftAppPassword
});

const newAdapter = new BotFrameworkAdapter({
    appId: endpointConfig.appId || process.env.MicrosoftAppId,
    appPassword: endpointConfig.appPassword || process.env.MicrosoftAppPassword
});

Включите код onTurnError для отлова ошибок:

// Catch-all for errors.
adapter.onTurnError = async (context, error) => {
    console.error(`\n [onTurnError]: ${ error }`);
    await context.sendActivity(`Oops. Something went wrong!`);
};

// Catch-all for errors.
newAdapter.onTurnError = async (context, error) => {
    console.error(`\n [onTurnError]: ${ error }`);
    await context.sendActivity(`Oops. Something went wrong!`);
};

Затем установите новые адаптеры и создайте новый turnContext:

server.post('/api/messages', (req, res) => {
    adapter.processActivity(req, res, async (turnContext) => {
        await bot.onTurn(turnContext);
    });
    newAdapter.createContext(req, res);
});

Опции 2: В файле index.js, основанном на вышеприведенном коде, установите адаптеры для ожидания отдельных методов "onTurn":

// Listen for incoming requests.
server.post('/api/messages', (req, res) => {
    adapter.processActivity(req, res, async (turnContext) => {
        await bot.onTurn(turnContext);
    });
    newAdapter.processActivity(req, res, async (turnContext) => {
        await bot.newOnTurn(turnContext);
    });
});

В файле bot.js у вас будет два " onTurn "методы. В этом примере различные методы «onTurn» вызываются в зависимости от того, отправлено ли сообщение или я удаляю данные пользователя (я отправляю это событие через пункт меню Emulator => Conversation). То, что вы решите сопоставить, зависит от вас.

    async newOnTurn(turnContext) {
        if (turnContext.activity.type === ActivityTypes.DeleteUserData) {
            const dc = await this.dialogs.createContext(turnContext);

            await dc.context.sendActivity(`Looks like you deleted some user data.`);
        }
    }

    async onTurn(turnContext) {
        if (turnContext.activity.type === ActivityTypes.Message) {
            const dc = await this.dialogs.createContext(turnContext);

            await dc.context.sendActivity(`Looks like you sent a message.`);
        }
    }

Надежда на помощь!

0
ответ дан Steven Kanberg 18 March 2019 в 18:32
поделиться