Guia de início rápido: fazer uma chamada de saída usando a automação de chamadas
Artigo
As APIs de Automação de Chamadas dos Serviços de Comunicação do Azure são uma maneira poderosa de criar experiências de chamada interativas. Neste início rápido, abordamos uma maneira de fazer uma chamada de saída e reconhecer vários eventos na chamada.
Um recurso de Serviços de Comunicação implantado. Crie um recurso de Serviços de Comunicação.
Um número de telefone em seu recurso dos Serviços de Comunicação do Azure que pode fazer chamadas de saída. Se tiver uma subscrição gratuita, pode obter um número de telefone de avaliação.
Crie e hospede um Túnel de Desenvolvimento do Azure. Instruções aqui.
Crie um subdomínio personalizado para seu recurso de serviços de IA do Azure.
(Opcional) Um usuário do Microsoft Teams com uma licença de telefone habilitada voice . A licença por telefone do Teams é necessária para adicionar usuários do Teams à chamada. Saiba mais sobre as licenças do Teams aqui. Saiba mais sobre como ativar o sistema telefônico aqui voice.
Código de exemplo
Baixe ou clone o código de exemplo de início rápido do GitHub.
Navegue até a CallAutomation_OutboundCalling pasta e abra a solução em um editor de código.
Configurar e hospedar seu Azure DevTunnel
O Azure DevTunnels é um serviço do Azure que permite compartilhar serviços Web locais hospedados na Internet. Execute os comandos para conectar seu ambiente de desenvolvimento local à Internet pública. DevTunnels cria uma URL de ponto de extremidade persistente e que permite acesso anônimo. Usamos esse ponto de extremidade para notificar seu aplicativo sobre eventos de chamada do serviço de Automação de Chamadas dos Serviços de Comunicação do Azure.
Bash
devtunnel create --allow-anonymous
devtunnel port create -p 8080
devtunnel host
Como alternativa, siga as instruções para configurar seu Azure DevTunnel no Visual Studio
Atualize a configuração do aplicativo
Em seguida, atualize seu Program.cs arquivo com os seguintes valores:
acsConnectionString: A cadeia de conexão para seu recurso dos Serviços de Comunicação do Azure. Você pode encontrar sua cadeia de conexão dos Serviços de Comunicação do Azure usando as instruções aqui.
callbackUriHost: Depois de inicializar o host DevTunnel, atualize este campo com esse URI.
acsPhonenumber: atualize este campo com o número de telefone dos Serviços de Comunicação do Azure que adquiriu. Este número de telefone deve usar o formato de número de telefone E164 (por exemplo, +18881234567)
targetPhonenumber: campo de atualização com o número de telefone para o qual você gostaria que seu aplicativo ligasse. Este número de telefone deve usar o formato de número de telefone E164 (por exemplo, +18881234567)
cognitiveServiceEndpoint: campo de atualização com seu ponto de extremidade de serviços de IA do Azure.
targetTeamsUserId: Campo de atualização (opcional) com o ID de usuário do Microsoft Teams que você gostaria de adicionar à chamada. Consulte Usar a API do Graph para obter o ID de usuário do Teams.
C#
// Your ACS resource connection string var acsConnectionString = "<ACS_CONNECTION_STRING>";
// Your ACS resource phone number will act as source number to start outbound call var acsPhonenumber = "<ACS_PHONE_NUMBER>";
// Target phone number you want to receive the call. var targetPhonenumber = "<TARGET_PHONE_NUMBER>";
// Base url of the app var callbackUriHost = "<CALLBACK_URI_HOST_WITH_PROTOCOL>";
// Your cognitive service endpoint var cognitiveServiceEndpoint = "<COGNITIVE_SERVICE_ENDPOINT>";
// (Optional) User Id of the target teams user you want to receive the call.var targetTeamsUserId = "<TARGET_TEAMS_USER_ID>";
Fazer uma chamada de saída
Para fazer a chamada de saída dos Serviços de Comunicação do Azure, este exemplo usa o targetPhonenumber que você definiu anteriormente no aplicativo para criar a chamada usando a CreateCallAsync API. Este código fará uma chamada de saída usando o número de telefone de destino.
C#
PhoneNumberIdentifier target = new PhoneNumberIdentifier(targetPhonenumber);
PhoneNumberIdentifier caller = new PhoneNumberIdentifier(acsPhonenumber);
var callbackUri = new Uri(callbackUriHost + "/api/callbacks");
CallInvite callInvite = new CallInvite(target, caller);
var createCallOptions = new CreateCallOptions(callInvite, callbackUri) {
CallIntelligenceOptions = new CallIntelligenceOptions() {
CognitiveServicesEndpoint = new Uri(cognitiveServiceEndpoint)
}
};
CreateCallResult createCallResult = await callAutomationClient.CreateCallAsync(createCallOptions);
Manipular eventos de automação de chamadas
No início da nossa aplicação, registámos o callbackUriHost Serviço de Automatização de Chamadas. O host indica o ponto de extremidade que o serviço requer para nos notificar de eventos de chamada que acontecem. Podemos então iterar através dos eventos e detetar eventos específicos que nosso aplicativo deseja entender. No código abaixo respondemos ao CallConnected evento.
C#
app.MapPost("/api/callbacks", async (CloudEvent[] cloudEvents, ILogger < Program > logger) => {
foreach(var cloudEvent in cloudEvents) {
logger.LogInformation($"Event received: {JsonConvert.SerializeObject(cloudEvent)}");
CallAutomationEventBase parsedEvent = CallAutomationEventParser.Parse(cloudEvent);
logger.LogInformation($"{parsedEvent?.GetType().Name} parsedEvent received for call connection id: {parsedEvent?.CallConnectionId}");
var callConnection = callAutomationClient.GetCallConnection(parsedEvent.CallConnectionId);
var callMedia = callConnection.GetCallMedia();
if (parsedEvent is CallConnected) {
//Handle Call Connected Event
}
}
});
(Opcional) Adicionar um usuário do Microsoft Teams à chamada
Você pode adicionar um usuário do Microsoft Teams à chamada usando o AddParticipantAsync método com um MicrosoftTeamsUserIdentifier e a ID do usuário do Teams. Primeiro, você precisa concluir a etapa de pré-requisito Autorização para seu Recurso de Serviços de Comunicação do Azure para habilitar chamadas para usuários do Microsoft Teams. Opcionalmente, você também pode passar um SourceDisplayName para controlar o texto exibido na notificação do sistema para o usuário do Teams.
O serviço de automação de chamadas também permite a capacidade de iniciar a gravação e armazenar gravações de chamadas de voz e vídeo. Você pode saber mais sobre os vários recursos nas APIs de gravação de chamadas aqui.
C#
CallLocator callLocator = new ServerCallLocator(parsedEvent.ServerCallId);
var recordingResult = await callAutomationClient.GetCallRecording().StartAsync(new StartRecordingOptions(callLocator));
recordingId = recordingResult.Value.RecordingId;
Reproduza a mensagem de boas-vindas e reconheça
Usando o TextSource, você pode fornecer ao serviço o texto que deseja sintetizar e usar para sua mensagem de boas-vindas. O serviço de Automação de Chamadas dos CallConnected Serviços de Comunicação do Azure reproduz esta mensagem no evento.
Em seguida, passamos o texto para o e, em CallMediaRecognizeChoiceOptions seguida, chamamos StartRecognizingAsync. Isso permite que seu aplicativo reconheça a opção escolhida pelo chamador.
C#
if (parsedEvent is CallConnected callConnected) {
logger.LogInformation($"Start Recording...");
CallLocator callLocator = new ServerCallLocator(parsedEvent.ServerCallId);
var recordingResult = await callAutomationClient.GetCallRecording().StartAsync(new StartRecordingOptions(callLocator));
recordingId = recordingResult.Value.RecordingId;
var choices = GetChoices();
// prepare recognize tones var recognizeOptions = GetMediaRecognizeChoiceOptions(mainMenu, targetPhonenumber, choices);
// Send request to recognize tones await callMedia.StartRecognizingAsync(recognizeOptions);
}
CallMediaRecognizeChoiceOptions GetMediaRecognizeChoiceOptions(string content, string targetParticipant, List < RecognitionChoice > choices, string context = "") {
var playSource = new TextSource(content) {
VoiceName = SpeechToTextVoice
};
var recognizeOptions = new CallMediaRecognizeChoiceOptions(targetParticipant: new PhoneNumberIdentifier(targetParticipant), choices) {
InterruptCallMediaOperation = false,
InterruptPrompt = false,
InitialSilenceTimeout = TimeSpan.FromSeconds(10),
Prompt = playSource,
OperationContext = context
};
return recognizeOptions;
}
List < RecognitionChoice > GetChoices() {
returnnew List < RecognitionChoice > {
new RecognitionChoice("Confirm", new List < string > {
"Confirm",
"First",
"One"
}) {
Tone = DtmfTone.One
},
new RecognitionChoice("Cancel", new List < string > {
"Cancel",
"Second",
"Two"
}) {
Tone = DtmfTone.Two
}
};
}
Manipular eventos de escolha
A Automação de Chamadas dos Serviços de Comunicação do Azure aciona o api/callbacks webhook que configuramos e nos notificará com o RecognizeCompleted evento. O evento nos dá a capacidade de responder às entradas recebidas e desencadear uma ação. Em seguida, o aplicativo reproduz uma mensagem para o chamador com base na entrada específica recebida.
C#
if (parsedEvent is RecognizeCompleted recognizeCompleted) {
var choiceResult = recognizeCompleted.RecognizeResult as ChoiceResult;
var labelDetected = choiceResult?.Label;
var phraseDetected = choiceResult?.RecognizedPhrase;
// If choice is detected by phrase, choiceResult.RecognizedPhrase will have the phrase detected, // If choice is detected using dtmf tone, phrase will be null
logger.LogInformation("Recognize completed successfully, labelDetected={labelDetected}, phraseDetected={phraseDetected}", labelDetected, phraseDetected);
var textToPlay = labelDetected.Equals(ConfirmChoiceLabel, StringComparison.OrdinalIgnoreCase) ? ConfirmedText : CancelText;
await HandlePlayAsync(callMedia, textToPlay);
}
async Task HandlePlayAsync(CallMedia callConnectionMedia, string text) {
// Play goodbye message var GoodbyePlaySource = new TextSource(text) {
VoiceName = "en-US-NancyNeural"
};
await callConnectionMedia.PlayToAllAsync(GoodbyePlaySource);
}
Desligue e pare de gravar
Finalmente, quando detetamos uma condição que faz sentido para encerrarmos a chamada, podemos usar o HangUpAsync método para desligar a chamada.
C#
if ((parsedEvent is PlayCompleted) || (parsedEvent is PlayFailed))
{
logger.LogInformation($"Stop recording and terminating call.");
callAutomationClient.GetCallRecording().Stop(recordingId);
await callConnection.HangUpAsync(true);
}
Para executar o aplicativo com o VS Code, abra uma janela do Terminal e execute o seguinte comando
Bash
dotnet run
Abra http://localhost:8080/swagger/index.html ou o URL do túnel de desenvolvimento no navegador. O URL do túnel tem a seguinte aparência: <YOUR DEV TUNNEL ENDPOINT>/swagger/index.html
Pressione Ctrl+F5 para executar o aplicativo Web sem o depurador. O navegador da Web abre automaticamente para uma URL de túnel. O URL do túnel tem a seguinte aparência: <YOUR DEV TUNNEL ENDPOINT>/swagger/index.html
Um recurso de Serviços de Comunicação implantado. Crie um recurso de Serviços de Comunicação.
Um número de telefone em seu recurso dos Serviços de Comunicação do Azure que pode fazer chamadas de saída. Se tiver uma subscrição gratuita, pode obter um número de telefone de avaliação.
Crie e hospede um Túnel de Desenvolvimento do Azure. Instruções aqui.
(Opcional) Um usuário do Microsoft Teams com uma licença de telefone habilitada voice . A licença por telefone do Teams é necessária para adicionar usuários do Teams à chamada. Saiba mais sobre as licenças do Teams aqui. Para obter mais informações para ativar voice no seu sistema telefónico, consulte Configurar o seu sistema telefónico.
Código de exemplo
Baixe ou clone o código de exemplo de início rápido do GitHub.
Navegue até a CallAutomation_OutboundCalling pasta e abra a solução em um editor de código.
Configurar e hospedar seu Azure DevTunnel
O Azure DevTunnels é um serviço do Azure que permite compartilhar serviços Web locais hospedados na Internet. Execute os comandos DevTunnel para conectar seu ambiente de desenvolvimento local à Internet pública. Em seguida, o DevTunnels cria um túnel com uma URL de ponto de extremidade persistente e que permite acesso anônimo. Os Serviços de Comunicação do Azure usam esse ponto de extremidade para notificar seu aplicativo sobre eventos de chamada do serviço de Automação de Chamadas dos Serviços de Comunicação do Azure.
Bash
devtunnel create --allow-anonymous
devtunnel port create -p MY_SPRINGAPP_PORT
devtunnel host
Atualize a configuração do aplicativo
Em seguida, abra o application.yml/resources arquivo na pasta para configurar os seguintes valores:
connectionstring: A cadeia de conexão para seu recurso dos Serviços de Comunicação do Azure. Você pode encontrar sua cadeia de conexão dos Serviços de Comunicação do Azure usando as instruções aqui.
basecallbackuri: Depois de inicializar o host DevTunnel, atualize este campo com esse URI.
callerphonenumber: atualize este campo com o número de telefone dos Serviços de Comunicação do Azure que adquiriu. Este número de telefone deve usar o formato de número de telefone E164 (por exemplo, +18881234567)
targetphonenumber: campo de atualização com o número de telefone para o qual você gostaria que seu aplicativo ligasse. Este número de telefone deve usar o formato de número de telefone E164 (por exemplo, +18881234567)
cognitiveServiceEndpoint: campo de atualização com seu ponto de extremidade de serviços de IA do Azure.
targetTeamsUserId: Campo de atualização (opcional) com o ID de usuário do Microsoft Teams que você gostaria de adicionar à chamada. Consulte Usar a API do Graph para obter o ID de usuário do Teams.
YAML
acs:connectionstring:<YOURACSCONNECTIONSTRING>basecallbackuri:<YOURDEVTUNNELENDPOINT>callerphonenumber:<YOURACSPHONENUMBERex."+1425XXXAAAA">
targetphonenumber: <YOUR TARGET PHONE NUMBER ex. "+1425XXXAAAA">
cognitiveServiceEndpoint: <YOUR COGNITIVE SERVICE ENDPOINT>
targetTeamsUserId:<(OPTIONAL)YOURTARGETTEAMSUSERIDex."00aa00aa-bb11-cc22-dd33-44ee44ee44ee">
Fazer uma chamada de saída e reproduzir mídia
Para fazer a chamada de saída dos Serviços de Comunicação do Azure, este exemplo usa o targetphonenumber que você definiu no application.yml arquivo para criar a chamada usando a createCallWithResponse API.
Java
PhoneNumberIdentifier caller = new PhoneNumberIdentifier(appConfig.getCallerphonenumber());
PhoneNumberIdentifier target = new PhoneNumberIdentifier(appConfig.getTargetphonenumber());
CallInvite callInvite = new CallInvite(target, caller);
CreateCallOptions createCallOptions = new CreateCallOptions(callInvite, appConfig.getCallBackUri());
CallIntelligenceOptions callIntelligenceOptions = new CallIntelligenceOptions().setCognitiveServicesEndpoint(appConfig.getCognitiveServiceEndpoint());
createCallOptions = createCallOptions.setCallIntelligenceOptions(callIntelligenceOptions);
Response<CreateCallResult> result = client.createCallWithResponse(createCallOptions, Context.NONE);
(Opcional) Adicionar um usuário do Microsoft Teams à chamada
Você pode adicionar um usuário do Microsoft Teams à chamada usando o addParticipant método com um MicrosoftTeamsUserIdentifier e a ID do usuário do Teams. Primeiro, você precisa concluir a etapa de pré-requisito Autorização para seu Recurso de Serviços de Comunicação do Azure para habilitar chamadas para usuários do Microsoft Teams. Opcionalmente, você também pode passar um SourceDisplayName para controlar o texto exibido na notificação do sistema para o usuário do Teams.
Java
client.getCallConnection(callConnectionId).addParticipant(
new CallInvite(new MicrosoftTeamsUserIdentifier(targetTeamsUserId))
.setSourceDisplayName("Jack (Contoso Tech Support)"));
Iniciar a gravação de uma chamada
O serviço de automação de chamadas também permite a capacidade de iniciar a gravação e armazenar gravações de chamadas de voz e vídeo. Você pode saber mais sobre os vários recursos nas APIs de gravação de chamadas aqui.
No início da nossa aplicação, registámos o basecallbackuri Serviço de Automatização de Chamadas. O URI indica o ponto de extremidade que o serviço usará para nos notificar sobre eventos de chamada que acontecem. Podemos então iterar através dos eventos e detetar eventos específicos que nosso aplicativo deseja entender. No código abaixo respondemos ao CallConnected evento.
Usando o TextSource, você pode fornecer ao serviço o texto que deseja sintetizar e usar para sua mensagem de boas-vindas. O serviço de Automação de Chamadas dos CallConnected Serviços de Comunicação do Azure reproduz esta mensagem no evento.
Em seguida, passamos o texto para o e, em CallMediaRecognizeChoiceOptions seguida, chamamos StartRecognizingAsync. Isso permite que seu aplicativo reconheça a opção escolhida pelo chamador.
Java
var playSource = new TextSource().setText(content).setVoiceName("en-US-NancyNeural");
var recognizeOptions = new CallMediaRecognizeChoiceOptions(new PhoneNumberIdentifier(targetParticipant), getChoices())
.setInterruptCallMediaOperation(false)
.setInterruptPrompt(false)
.setInitialSilenceTimeout(Duration.ofSeconds(10))
.setPlayPrompt(playSource)
.setOperationContext(context);
client.getCallConnection(callConnectionId)
.getCallMedia()
.startRecognizing(recognizeOptions);
private List < RecognitionChoice > getChoices() {
var choices = Arrays.asList(
new RecognitionChoice().setLabel(confirmLabel).setPhrases(Arrays.asList("Confirm", "First", "One")).setTone(DtmfTone.ONE),
new RecognitionChoice().setLabel(cancelLabel).setPhrases(Arrays.asList("Cancel", "Second", "Two")).setTone(DtmfTone.TWO)
);
return choices;
}
Manipular eventos de escolha
A Automação de Chamadas dos Serviços de Comunicação do Azure aciona o api/callbacks webhook que configuramos e nos notificará com o RecognizeCompleted evento. O evento nos dá a capacidade de responder às entradas recebidas e desencadear uma ação. Em seguida, o aplicativo reproduz uma mensagem para o chamador com base na entrada específica recebida.
Um recurso de Serviços de Comunicação implantado. Crie um recurso de Serviços de Comunicação.
Um número de telefone em seu recurso dos Serviços de Comunicação do Azure que pode fazer chamadas de saída. Se tiver uma subscrição gratuita, pode obter um número de telefone de avaliação.
Crie e hospede um Túnel de Desenvolvimento do Azure. Instruções aqui.
(Opcional) Um usuário do Microsoft Teams com uma licença de telefone habilitada voice . A licença por telefone do Teams é necessária para adicionar usuários do Teams à chamada. Saiba mais sobre as licenças do Teams aqui. Para obter mais informações para ativar voice no seu sistema telefónico, consulte Configurar o seu sistema telefónico.
Código de exemplo
Baixe ou clone o código de exemplo de início rápido do GitHub.
Navegue até a CallAutomation_OutboundCalling pasta e abra a solução em um editor de código.
Configurar o ambiente
Baixe o código de exemplo e navegue até o diretório do projeto e execute o npm comando que instala as dependências necessárias e configura seu ambiente de desenvolvedor.
Bash
npm install
Configurar e hospedar seu Azure DevTunnel
O Azure DevTunnels é um serviço do Azure que permite compartilhar serviços Web locais hospedados na Internet. Use os comandos da CLI do DevTunnel para conectar seu ambiente de desenvolvimento local à Internet pública. Usamos esse ponto de extremidade para notificar seu aplicativo sobre eventos de chamada do serviço de Automação de Chamadas dos Serviços de Comunicação do Azure.
Bash
devtunnel create --allow-anonymous
devtunnel port create -p 8080
devtunnel host
Atualize a configuração do aplicativo
Em seguida, atualize o arquivo com os .env seguintes valores:
CONNECTION_STRING: A cadeia de conexão para seu recurso dos Serviços de Comunicação do Azure. Você pode encontrar sua cadeia de conexão dos Serviços de Comunicação do Azure usando as instruções aqui.
CALLBACK_URI: Depois de inicializar o host DevTunnel, atualize este campo com esse URI.
TARGET_PHONE_NUMBER: campo de atualização com o número de telefone para o qual você gostaria que seu aplicativo ligasse. Este número de telefone deve usar o formato de número de telefone E164 (por exemplo, +18881234567)
ACS_RESOURCE_PHONE_NUMBER: atualize este campo com o número de telefone dos Serviços de Comunicação do Azure que adquiriu. Este número de telefone deve usar o formato de número de telefone E164 (por exemplo, +18881234567)
COGNITIVE_SERVICES_ENDPOINT: campo de atualização com seu ponto de extremidade de serviços de IA do Azure.
TARGET_TEAMS_USER_ID: Campo de atualização (opcional) com o ID de usuário do Microsoft Teams que você gostaria de adicionar à chamada. Consulte Usar a API do Graph para obter o ID de usuário do Teams.
Para fazer a chamada de saída dos Serviços de Comunicação do Azure, use o número de telefone fornecido ao ambiente. Certifique-se de que o número de telefone está no formato de número de telefone E164 (por exemplo, +18881234567)
O código faz uma chamada de saída usando o target_phone_number que você forneceu e faz uma chamada de saída para esse número:
O serviço de automação de chamadas também permite a capacidade de iniciar a gravação e armazenar gravações de chamadas de voz e vídeo. Você pode saber mais sobre os vários recursos nas APIs de gravação de chamadas aqui.
No início da nossa aplicação, registámos o CALLBACK_URI Serviço de Automatização de Chamadas. O URI indica o ponto de extremidade que o serviço usa para nos notificar sobre eventos de chamada que acontecem. Podemos então iterar através dos eventos e detetar eventos específicos que nosso aplicativo deseja entender. Respondemos ao CallConnected evento para sermos notificados e iniciarmos operações a jusante. Usando o TextSource, você pode fornecer ao serviço o texto que deseja sintetizar e usar para sua mensagem de boas-vindas. O serviço de Automação de Chamadas dos CallConnected Serviços de Comunicação do Azure reproduz esta mensagem no evento.
Em seguida, passamos o texto para o e, em CallMediaRecognizeChoiceOptions seguida, chamamos StartRecognizingAsync. Isso permite que seu aplicativo reconheça a opção escolhida pelo chamador.
A Automação de Chamadas dos Serviços de Comunicação do Azure aciona o api/callbacks webhook que configuramos e nos notificará com o RecognizeCompleted evento. O evento nos dá a capacidade de responder às entradas recebidas e desencadear uma ação. Em seguida, o aplicativo reproduz uma mensagem para o chamador com base na entrada específica recebida.
Um recurso de Serviços de Comunicação implantado. Crie um recurso de Serviços de Comunicação.
Um número de telefone em seu recurso dos Serviços de Comunicação do Azure que pode fazer chamadas de saída. Se tiver uma subscrição gratuita, pode obter um número de telefone de avaliação.
Crie e hospede um Túnel de Desenvolvimento do Azure. Instruções aqui.
(Opcional) Um usuário do Microsoft Teams com uma licença de telefone habilitada voice . A licença por telefone do Teams é necessária para adicionar usuários do Teams à chamada. Saiba mais sobre as licenças do Teams aqui. Para obter mais informações para ativar voice no seu sistema telefónico, consulte Configurar o seu sistema telefónico.
Código de exemplo
Baixe ou clone o código de exemplo de início rápido do GitHub.
Navegue até a CallAutomation_OutboundCalling pasta e abra a solução em um editor de código.
Configurar o ambiente Python
Crie e ative o ambiente python e instale os pacotes necessários usando o seguinte comando. Você pode saber mais sobre como gerenciar pacotes aqui
Bash
pip install -r requirements.txt
Configurar e hospedar seu Azure DevTunnel
O Azure DevTunnels é um serviço do Azure que permite compartilhar serviços Web locais hospedados na Internet. Use os comandos para conectar seu ambiente de desenvolvimento local à Internet pública. DevTunnels cria um túnel com uma URL de ponto de extremidade persistente e que permite acesso anônimo. Usamos esse ponto de extremidade para notificar seu aplicativo sobre eventos de chamada do serviço de Automação de Chamadas dos Serviços de Comunicação do Azure.
Bash
devtunnel create --allow-anonymous
devtunnel port create -p 8080
devtunnel host
Atualize a configuração do aplicativo
Em seguida, atualize o main.py arquivo com os seguintes valores:
ACS_CONNECTION_STRING: A cadeia de conexão para seu recurso dos Serviços de Comunicação do Azure. Você pode encontrar sua cadeia de conexão dos Serviços de Comunicação do Azure usando as instruções aqui.
CALLBACK_URI_HOST: Depois de inicializar o host DevTunnel, atualize este campo com esse URI.
TARGET_PHONE_NUMBER: campo de atualização com o número de telefone para o qual você gostaria que seu aplicativo ligasse. Este número de telefone deve usar o formato de número de telefone E164 (por exemplo, +18881234567)
ACS_PHONE_NUMBER: atualize este campo com o número de telefone dos Serviços de Comunicação do Azure que adquiriu. Este número de telefone deve usar o formato de número de telefone E164 (por exemplo, +18881234567)
COGNITIVE_SERVICES_ENDPOINT: campo de atualização com seu ponto de extremidade de serviços de IA do Azure.
TARGET_TEAMS_USER_ID: Campo de atualização (opcional) com o ID de usuário do Microsoft Teams que você gostaria de adicionar à chamada. Consulte Usar a API do Graph para obter o ID de usuário do Teams.
Python
# Your ACS resource connection string
ACS_CONNECTION_STRING = "<ACS_CONNECTION_STRING>"# Your ACS resource phone number will act as source number to start outbound call
ACS_PHONE_NUMBER = "<ACS_PHONE_NUMBER>"# Target phone number you want to receive the call.
TARGET_PHONE_NUMBER = "<TARGET_PHONE_NUMBER>"# Callback events URI to handle callback events.
CALLBACK_URI_HOST = "<CALLBACK_URI_HOST_WITH_PROTOCOL>"
CALLBACK_EVENTS_URI = CALLBACK_URI_HOST + "/api/callbacks"#Your Cognitive service endpoint
COGNITIVE_SERVICES_ENDPOINT = "<COGNITIVE_SERVICES_ENDPOINT>"#(OPTIONAL) Your target Microsoft Teams user Id ex. "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
TARGET_TEAMS_USER_ID = "<TARGET_TEAMS_USER_ID>"
Fazer uma chamada de saída
Para fazer a chamada de saída dos Serviços de Comunicação do Azure, primeiro forneça o número de telefone que deseja receber a chamada. Para simplificar, você pode atualizar o target_phone_number com um número de telefone no formato de número de telefone E164 (por exemplo, +18881234567)
Faça uma chamada de saída usando o target_phone_number que você forneceu:
(Opcional) Adicionar um usuário do Microsoft Teams à chamada
Você pode adicionar um usuário do Microsoft Teams à chamada usando o add_participant método com um MicrosoftTeamsUserIdentifier e a ID do usuário do Teams. Primeiro, você precisa concluir a etapa de pré-requisito Autorização para seu Recurso de Serviços de Comunicação do Azure para habilitar chamadas para usuários do Microsoft Teams. Opcionalmente, você também pode passar um source_display_name para controlar o texto exibido na notificação do sistema para o usuário do Teams.
O serviço de automação de chamadas também permite a capacidade de iniciar a gravação e armazenar gravações de chamadas de voz e vídeo. Você pode saber mais sobre os vários recursos nas APIs de gravação de chamadas aqui.
No início da nossa aplicação, registámos o CALLBACK_URI_HOST Serviço de Automatização de Chamadas. O URI indica o ponto de extremidade que o serviço usa para nos notificar sobre eventos de chamada que acontecem. Podemos então iterar através dos eventos e detetar eventos específicos que nosso aplicativo deseja entender. No código abaixo respondemos ao CallConnected evento.
Python
@app.route('/api/callbacks', methods=['POST'])defcallback_events_handler():for event_dict in request.json:
event = CloudEvent.from_dict(event_dict)
if event.type == "Microsoft.Communication.CallConnected":
# Handle Call Connected Event
...
return Response(status=200)
Reproduza a mensagem de boas-vindas e reconheça
Usando o TextSource, você pode fornecer ao serviço o texto que deseja sintetizar e usar para sua mensagem de boas-vindas. O serviço de Automação de Chamadas dos CallConnected Serviços de Comunicação do Azure reproduz esta mensagem no evento.
Em seguida, passamos o texto para o e, em CallMediaRecognizeChoiceOptions seguida, chamamos StartRecognizingAsync. Isso permite que seu aplicativo reconheça a opção escolhida pelo chamador.
A Automação de Chamadas dos Serviços de Comunicação do Azure aciona o api/callbacks webhook que configuramos e nos notificará com o RecognizeCompleted evento. O evento nos dá a capacidade de responder às entradas recebidas e desencadear uma ação. Em seguida, o aplicativo reproduz uma mensagem para o chamador com base na entrada específica recebida.
Finalmente, quando detetamos uma condição que faz sentido para encerrarmos a chamada, podemos usar o hang_up() método para desligar a chamada. Finalmente, também podemos parar com segurança a operação de gravação de chamadas.
Fornece um início rápido para os desenvolvedores obterem fluxos de áudio por meio de APIs de streaming de áudio de chamadas dos Serviços de Comunicação do Azure.