Azure / Azure/azure-sdk-for-python

[azure-communication-callautomation] connect_call() should support teamsMeetingLink as a CallLocatorKind

Abierto
#46,491 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Client Communication Communication - Call Automation customer-reported feature-request needs-team-attention Service Attention
Lenguaje dominante
Python
Estrellas
5.6k
Forks
3.4k
Merge medio
2 d 2 h
PR fusionados (30 d)
213

Descripción

Labels: feature-request, Azure.Communication.CallAutomation

Description

The ACS Call Automation SDK's connect_call() method does not support joining a Teams meeting via a Teams meeting link. The CallLocatorKind enum only accepts groupCallLocator, serverCallLocator, and roomCallLocator — but not teamsMeetingLink.

This forces developers building bots that need to join Teams meetings programmatically to bypass the ACS SDK entirely and use the Microsoft Graph Communications API (POST /communications/calls) instead, losing the benefits of ACS Call Automation (media streaming, call recording, DTMF, etc.).

Repro Steps

  1. Install azure-communication-callautomation==1.6.0b1
  2. Attempt to connect to a Teams meeting using a meeting link:
from azure.communication.callautomation import CallAutomationClient

client = CallAutomationClient.from_connection_string(conn_str)

# There is no way to pass a Teams meeting link to connect_call()
# The method signature only accepts: server_call_id, group_call_id, room_id
result = client.connect_call(
    callback_url="https://mybot.azurewebsites.net/api/calls/events",
    # No parameter for teams_meeting_link
)
  1. If you try to call the REST API directly with "kind": "teamsMeetingLink" in the call locator, the service returns:
400 Bad Request
Error converting value "teamsMeetingLink" to type
'Microsoft.Skype.Platform.ExecutionAgent.Azure.Communication.Service.Common.CallLocator.Dto.v2.CallLocatorKind'

Expected Behavior

connect_call() (or a new method like connect_to_teams_meeting()) should accept a Teams meeting join URL and connect the ACS bot to that meeting. For example:

result = client.connect_call(
    teams_meeting_link="https://teams.microsoft.com/l/meetup-join/...",
    callback_url="https://mybot.azurewebsites.net/api/calls/events",
)

Or alternatively, CallLocatorKind should be extended to include teamsMeetingLink, and the service-side connect endpoint should handle it the same way create_call handles TeamsMeetingLinkLocator.

Actual Behavior

  • The Python SDK connect_call() only accepts server_call_id, group_call_id, or room_id
  • The REST API connect endpoint rejects teamsMeetingLink as a CallLocatorKind
  • There is no SDK-level path to join a Teams meeting via ACS Call Automation

Inconsistency with create_call()

Note that create_call() does support Teams meeting links via TeamsMeetingLinkLocator:

from azure.communication.callautomation import TeamsMeetingLinkLocator

locator = TeamsMeetingLinkLocator("https://teams.microsoft.com/l/meetup-join/...")
client.create_call(target_participant=locator, callback_url=callback_url)

However, create_call() requires an ACS user identity to place the call as, which is not suitable for server-side bots that need to join meetings as application-level participants (without a user context).

The connect endpoint is the correct pattern for this use case, but it lacks Teams meeting link support.

Environment

  • SDK: azure-communication-callautomation==1.6.0b1
  • API version: 2025-08-15-preview
  • Python: 3.12
  • OS: Linux (Azure App Service) / macOS (local dev)

Swagger Reference

The CallLocatorKind enum in the swagger spec for the connect endpoint only defines:

"CallLocatorKind": {
  "type": "string",
  "enum": ["groupCallLocator", "serverCallLocator", "roomCallLocator"]
}

Impact

Without this capability, developers who need a server-side bot to join an existing Teams meeting must abandon the ACS SDK and implement the Microsoft Graph Communications API directly, which:

  • Loses access to ACS Call Automation features (media streaming, call recording, real-time transcription, DTMF)
  • Requires separate Graph API permission grants (Calls.JoinGroupCall.All)
  • Adds significant complexity for a common bot scenario

Suggested Fix

  1. Add teamsMeetingLink to the CallLocatorKind enum in the service
  2. Accept teams_meeting_link as a parameter in the Python SDK's connect_call()
  3. Alternatively, add a new connect_to_teams_meeting(meeting_link, callback_url, ...) convenience method

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con connect_call() y la definición de CallLocatorKind en la especificación Swagger communicationservicescallautomation.json enlazada y, a continuación, compáralos con create_call() y TeamsMeetingLinkLocator. Rastrea cómo representa su locator el endpoint connect y determina los cambios compatibles en el SDK y el servicio. La tarea estará completada cuando se acepte un enlace de reunión de Teams a través de la ruta connect sin eliminar la compatibilidad existente con los locators.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
api, backend
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
42/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.