Aracılığıyla paylaş


Botunuzda Direct Line Speech kullanma

ŞUNLAR IÇIN GEÇERLIDIR: SDK v4

Direct Line Speech, Direct Line Speech kanalı ile botunuz arasında ileti alışverişi yapmak için Bot Framework'ün websocket tabanlı yeni bir akış özelliğini kullanır. Azure portalında Doğrudan Çizgi Konuşma kanalını etkinleştirdikten sonra, bu WebSocket bağlantılarını dinlemek ve kabul etmek için botunuzu güncelleştirmeniz gerekir. Bu yönergeler bunun nasıl yapılacağını açıklar.

SDK'nın en son sürümüne yükseltme

Doğrudan Çizgi Konuşma için Bot Builder SDK'sının en son sürümünü kullandığınızdan emin olun.

AddBot ve UseBotFramework kullanıyorsa .NET Core botunuzu güncelleştirin

Bot Builder SDK'sının 4.3.2 sürümünden önceki v4 sürümünü kullanarak bir bot oluşturduysanız, botunuz büyük olasılıkla BotController içermez, bunun yerine Botun iletileri aldığı POST uç noktasını kullanıma açmak için Startup.cs dosyasındaki AddBot() ve UseBotFramework() yöntemlerini kullanır. Yeni akış uç noktasını kullanıma açmak için bir BotController eklemeniz ve AddBot() ve UseBotFramework() yöntemlerini kaldırmanız gerekir. Bu yönergeler yapılması gereken değişikliklere yol gösterir. Bu değişiklikleri zaten aldıysanız sonraki adıma geçin.

BotController.cs adlı bir dosya ekleyerek bot projenize yeni bir MVC denetleyicisi ekleyin. Denetleyici kodunu bu dosyaya ekleyin:

[Route("api/messages")]

[ApiController]

public class BotController : ControllerBase
{
    private readonly IBotFrameworkHttpAdapter _adapter;
    private readonly IBot _bot;
    public BotController(IBotFrameworkHttpAdapter adapter, IBot bot)
    {
        _adapter = adapter;

        _bot = bot;
    }

    [HttpPost, HttpGet]
    public async Task ProcessMessageAsync()
    {
        await _adapter.ProcessAsync(Request, Response, _bot);
    }
}

Startup.cs dosyasında Yapılandır yöntemini bulun. UseBotFramework() Satırı kaldırın ve şu satırlara UseWebSocketssahip olduğunuzdan emin olun:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    ...
    app.UseDefaultFiles();
    app.UseStaticFiles();
    app.UseWebSockets();
    app.UseMvc();
    ...
}

Ayrıca Startup.cs dosyasında ConfigureServices yöntemini bulun. AddBot() Satırı kaldırın ve ve BotFrameworkHttpAdapteröğesini eklemek IBot için çizgileriniz olduğundan emin olun:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    services.AddSingleton<ICredentialProvider, ConfigurationCredentialProvider>();
    services.AddSingleton<IChannelProvider, ConfigurationChannelProvider>();

    // Create the Bot Framework Adapter.
    services.AddSingleton<IBotFrameworkHttpAdapter, BotFrameworkHttpAdapter>();

    // Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
    services.AddTransient<IBot, EchoBot>();
}

Bot kodunuzun geri kalanı aynı kalır!

WebSockets'in etkinleştirildiğinden emin olun

Azure portalından EchoBot gibi şablonlardan birini kullanarak yeni bir bot oluşturduğunuzda, GET ve POST uç noktasını kullanıma sunan ve WebSockets'i de kullanan bir ASP.NET MVC denetleyicisi içeren bir bot alırsınız. Bu yönergeler, bir şablonu yükselttiğinizde veya kullanmadığınızda bu öğelerin botunuza nasıl ekleneceğini açıklar.

Çözümünüzdeki Denetleyiciler klasörünün altında BotController.cs dosyasını açın

PostAsync sınıfında yöntemini bulun ve [HttpPost] içindeki dekorasyonunu [HttpPost, HttpGet] olarak güncelleştirin:

[HttpPost, HttpGet]
public async Task PostAsync()
{
    await _adapter.ProcessAsync(Request, Response, _bot);
}

BotController.cs dosyasını kaydetme ve kapatma

Çözümünüzün kökünde Startup.cs dosyasını açın.

Startup.cs dosyasında Yapılandır yönteminin en altına gidin. çağrısından önce öğesine app.UseMvc()bir çağrı app.UseWebSockets()ekleyin. Bu kullanım çağrılarının sırası önemli olduğundan bu önemlidir. yönteminin sonu aşağıdakine benzer olmalıdır:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    ...
    app.UseDefaultFiles();
    app.UseStaticFiles();
    app.UseWebSockets();
    app.UseMvc();
    ...
}

Bot kodunuzun geri kalanı aynı kalır!

İsteğe bağlı olarak etkinliklerde Konuşma alanını ayarlayın

Varsayılan olarak, Doğrudan Çizgi Konuşma aracılığıyla kullanıcıya gönderilen tüm iletiler konuşulur.

İsteğe bağlı olarak bottan gönderilen herhangi bir Etkinliğin Konuşma alanını ayarlayarak iletinin nasıl konuşulabileceğini özelleştirebilirsiniz:

public IActivity Speak(string message)
{
    var activity = MessageFactory.Text(message);
    string body = @"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='en-US'>

        <voice name='Microsoft Server Speech Text to Speech Voice (en-US, JessaRUS)'>" +
        $"{message}" + "</voice></speak>";

    activity.Speak = body;
    return activity;
}

Aşağıdaki kod parçacığında önceki Speak işlevin nasıl kullanılacağı gösterilmektedir:

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    await turnContext.SendActivityAsync(Speak($"Echo: {turnContext.Activity.Text}"), cancellationToken);
}

Ek bilgiler