32 lines
1 KiB
C#
32 lines
1 KiB
C#
using BotSharp.Plugin.Twilio.Models;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace BotSharp.Plugin.Twilio.Controllers;
|
|
|
|
public class TwilioReconnectController : TwilioController
|
|
{
|
|
private readonly TwilioSetting _settings;
|
|
private readonly IServiceProvider _services;
|
|
private readonly ILogger _logger;
|
|
|
|
public TwilioReconnectController(IServiceProvider services, TwilioSetting settings, ILogger<TwilioReconnectController> logger)
|
|
{
|
|
_services = services;
|
|
_settings = settings;
|
|
_logger = logger;
|
|
}
|
|
|
|
[ValidateRequest]
|
|
[HttpPost("twilio/stream/reconnect")]
|
|
public async Task<TwiMLResult> Reconnect(ConversationalVoiceRequest request)
|
|
{
|
|
var response = new VoiceResponse();
|
|
var connect = new Connect();
|
|
var host = _settings.CallbackHost.Split("://").Last();
|
|
connect.Stream(url: $"wss://{host}/twilio/stream/{request.AgentId}/{request.ConversationId}");
|
|
response.Pause(1);
|
|
response.Append(connect);
|
|
return TwiML(response);
|
|
}
|
|
}
|