updates
74 TopicsFebruary 2025 Feature Updates
The Azure Communication Services team is excited to share several new product and feature updates released in January 2025. You can view previous blog articles. 1. Calling Native SDKs add calling to Teams call queues and auto attendants Status: GA Calling Native SDKs can now place calls to a Teams call queue or auto attendant. After answering the call, video calling and screenshare are available to both the Teams and Azure Communication Services users. These features are available in the Calling SDKs for Android, iOS, and Windows. See the Quickstart documentation for more details. For more information, see: Contact center scenarios Teams Call Queue on Azure Communication Services Teams Auto Attendant on Azure Communication Services 2. Calling Web & Graph Beta SDKs add Teams shared line appearance Status: Public Preview Microsoft Teams shared line appearance lets a user choose a delegate to answer or handle calls on their behalf. This feature is helpful if a user has an administrative assistant who regularly handles the user's calls. In the context of Teams shared line appearance, a manager is someone who authorizes a delegate to make or receive calls on their behalf. A delegate can make or receive calls on behalf of the delegator. For more information, see: Microsoft Teams shared line appearance Tutorial - Teams Shared Line Appearance 3. Number Lookup API Status: GA We are excited to announce the General Availability of the Number Lookup API. Azure Communication Services enables you to validate the number format, retrieve insights and look up a specific phone number using the Communication Services Number Lookup SDK. This new function is part of the Phone Numbers SDK and can be used to support customer service scenarios, appointment reminders, two-factor authentication, and other real-time communication needs. Number Lookup enables you to reliably retrieve number insights (format, type, location, carrier, and so on) before engaging with end users. For more information, see: Number Lookup API concepts in Azure Communication Services Look up operator information for a phone number using Azure Communication Services 4. Updated navigation for technical documentation Status: Live In response to customer feedback and multiple customer interviews, we’re excited to announce an update to the navigational model of our technical documentation. We’ve adjusted the structure of our docs site navigation to make it quicker and simpler than ever to find the information you need when you need it. For more information, see: Azure Communication Services technical documentation table of contents update | Microsoft Community Hub Stay connected with our latest updates Never miss an update! Click the 'Follow' button to get notified about new blog posts and feature releases, or click here to check out our previous blog posts.Azure Communication Services technical documentation table of contents update
Technical documentation is like a map for using a platform—whether you're building services, solving problems, or learning new features, great documentation shows you the way to the solution you need. But what good is a map if it’s hard to read or confusing to follow? That’s why easy-to-navigate documentation is so important. It saves time, reduces frustration, and helps users focus on what they want to achieve. Azure Communication Services is a powerful platform, and powerful platforms require great documentation for both new and experienced developers. Our customers tell us consistently that our docs are a crucial part of their experience of using our platform. Some studies suggest that documentation and samples are the most important elements of a great developer experience. In this update, we’re excited to share how we’ve improved our technical documentation’s navigation to make it quicker and simpler than ever to find the information you need when you need it. Why did we change? In order for our content to be useful to you, it first needs to be findable. When we launched Azure Communication Services, the small number of articles on our site made it easy to navigate and find relevant content. As we’ve grown, though, our content became harder to find for users due to the quantity of articles they need to navigate. To refresh your memory, the table of contents on our docs site used to be structured with these base categories: Overview Quickstart Tutorials Samples Concepts Resources References These directory names describ e the type of content they contain. This structure is a very useful model for products with a clearly-defined set of use cases, where typically a customer’s job-to-be-done is more constrained, but it breaks down when used for complex, powerful platforms that support a broad range of use cases in the way that Azure Communication Services does. We tried a number of small-scale changes to address the problems people were having on our site, such as having certain directories default to open on page load, but as the site grew, we became concerned that our site navigation model was becoming confusing to users and having a negative impact on their experience with our product. We decided to test that hypothesis and consider different structures that might serve our content and our customers better. Our user research team interviewed 18 customers with varying levels of experience on our platform. The research uncovered several problems that customers were having with the way our docs navigation was structured. From confusing folder titles, to related topics being far away from each other in the nav model, to general confusion around what folder titles meant, to problems finding some of the most basic information about using our platform, and a host of other issues, our user research made it clear to us that we had a problem that we needed to fix for our users. What did we change in this release? To help address these issues, we made a few key changes to make our table of contents simpler and easier to navigate. The changes we made were strictly to site navigation, not page content, and they include: We've restructured the root-level navigation to be focused on communication modality and feature type, rather than content type, to better model our customers' jobs-to-be-done. Topics include All supported communication channels Horizontal features that span more than one channel Topics of special interest to our customers, like AI Basic needs, like troubleshooting and support This will allow customers to more easily find the content they need by focusing on the job they need to do, rather than on the content type. We've simplified the overview and fundamentals sections to make the site less overwhelming on first load. We've surfaced features that customers told us were difficult to find, such as UI Library, Teams interop, and Job router. We've organized the content within each directory to roughly follow a beginner->expert path to make content more linear, and to make it easier for a user to find the next step in completing their task. We've removed unnecessary layers in our nav, making content easier to find. We've added a link to pricing information to each primitive to address a common customer complaint, that pricing information is difficult to find and understand. We've combined quickstarts, samples, and tutorials into one directory per primitive, called "Samples and tutorials", to address a customer complaint that our category names were confusing. We added a directory to each primitive for Resources, to keep important information close by. We added root-level directories for Common Scenarios, Troubleshooting, and Help and support. We did a full pass across all TOC entries to ensure correct casing, and edited entries for readability and consistency with page content, as well as for length to adhere to Microsoft guidelines and improve readability. These changes have led us to a structure that we feel less taxing for the reader, especially on first visit, maps more closely to the customer’s mental model of the information by focusing on the job-to-be-done rather than content type, helps lead them through the content from easiest to hardest, helps make it easier for them to find the information they need when they need it, and helps remind them of all the different features we support. Here’s what the table of contents looks like on page load as of Feb 6: These changes are live now. You can see them on the Azure Communication Services Technical documentation site. What’s next: In the coming weeks we will continue to make refinements based on customer feedback and our assessment of usage metrics. Our content team will begin updating article content to improve readability and enhance learning. We will be monitoring our changes and seeking your feedback. How will we monitor the effectiveness of our changes? To track the effectiveness of our changes and to be sure we haven’t regressed, we’ll be tracking a few key metrics Bounce rates: We’ll be on the lookout for an increase in bounce rates, which would indicate that customers are frequently landing on pages that don’t meet their expectations. Page Views: We’ll be tracking the number of page views for our most-visited pages across different features. A decrease in page views for these pages will be an indicator that customers are not able to find pages that had previously been popular. Customer Interviews: We will be reaching out to some of you to get your impressions of the new structure of our content over the coming weeks. Customer Surveys: We've created a survey that you can use to give us your feedback. We'll also be adding this link to select pages to allow you to tell us what you think of our changes while you're using them! So, give our new site navigation a try, and please don’t hesitate to share your feedback either by filling out our survey or by sending an email to acs-docs-feedback@microsoft.com. We look forward to hearing from you! A620Views2likes0CommentsJanuary 2025 Feature Updates
The Azure Communication Services team is excited to share several new product and feature updates released at the end of 2024 and January 2025. (You can view previous blog articles.) To kick off the new year, we’re excited to introduce several new features, organized into two key areas for clarity: Enhancing User Experience in Voice and Video Calling. New features like Picture-in-Picture (PiP) in the Calling Native iOS SDK, Real Time Text (RTT), managing SMS opt-out preferences, and more feature parity with Teams in the Web calling SDK enhance accessibility and engagement during calls. Advanced Management and Analytics for Communication Services. Teams admins can now view Azure Communication Services survey data, while developers can identify web calling participants with custom data tags improving overall communication management. Enhancing User Experience in Voice and Video Calling 1. SMS Opt-Out Management API Status: Public Preview The Opt-Out Management API is now available in Public Preview for Azure Communication Services. The Opt-Out Management API empowers developers to programmatically manage SMS opt-out preferences, enabling businesses to handle opt-out workflows seamlessly and ensure compliance with global messaging regulations. Unlike static opt-out management processes, where handling preferences is often manual and disconnected, this API introduces automation and flexibility. With endpoints for adding, removing, and checking opt-out entries, developers can centralize management across multiple channels and create smarter workflows that align with customer preferences and regulatory requirements. For example, a business can manage custom opt-out workflows where customers opt out via SMS and later update their preferences through a web portal. The Opt-Out Management API ensures these changes are synchronized in real time, providing businesses with complete control over compliance and transparency. Why is this important? Effective opt-out management is a cornerstone of responsible and compliant SMS communication. The Opt-Out Management API provides the tools to: Ensure Compliance: By automating opt-out workflows, businesses can meet regulatory requirements, reducing the risk of violations. Improve Efficiency: Replace manual processes with automation to streamline operations, particularly for large-scale messaging campaigns. Enhance Customer Trust: Enable customers to manage their preferences across different platforms, ensuring a transparent and consistent experience. string connectionString = "<Your_Connection_String>"; SmsClient smsClient = new SmsClient(connectionString); smsClient.OptOuts.Add("<from-phone-number>", new List<string> { "<to-phone-number1>", "<to-phone-number2>" }); Release Timeline Now Available: Public Preview release for the Opt-Out Management API. Future Plans: Enhancements based on feedback will inform the timeline for General Availability (GA), which will be announced later. Get Started with the Opt-Out Management API Developers and organizations can begin exploring the API now with the following resources: Conceptual Documentation: Short Message Service (SMS) Opt-Out Management API for Azure Communication Services - An Azure Communication Services concept document | Microsoft Learn QuickStart Guide: Send OptOut API requests with API (HMAC) | Microsoft Learn We’re looking forward to seeing how businesses leverage the Opt-Out Management API to build smarter, compliant messaging workflows. 2. Real Time Text (RTT) Status: Public Preview Another feature coming to Azure Communication Services is Real Time Text (RTT). Real-time text (RTT) is a system for transmitting text over the internet that enables the recipient to receive and display the text at the same rate as it is being produced without the user needed to hit send, giving the effect of immediate and continuous communication. Unlike traditional chat messaging, where the recipient sees the full message only after it is completed and sent, RTT provides an immediate and continuous stream of communication. For example, in a video or voice call, a user typing "Hello, how are you?" sees each character appear on the recipient’s screen as they type: "H," then "He," then "Hel," and so on. This messaging of text creates a dynamic, conversational experience that mirrors spoken communication. We added new APIs to Azure Communication Services Calling SDKs so that developers can easily and seamlessly integrate RTT into voice and video calls. These APIs also work in tandem with other accessibility features such as closed captions. Why is this important? RTT is an accessibility feature, and Microsoft is committed to accessibility. This commitment is especially relevant to Azure Communication Services, as the ability to inclusively reach as many humans as possible is an essential value proposition of a developer platform that connects people to people, and people to AI. Here’s how RTT makes a difference: Better Accessibility: RTT empowers individuals with speech or hearing impairments to actively participate in conversations. Its real-time functionality ensures their input is received as fluidly and immediately as spoken words, creating equitable and inclusive communication experiences. Enhancing Clarity: In environments where background noise or technical limitations affect audio quality, RTT serves as a reliable text-based alternative to convey important messages accurately. As communication moves increasingly to internet-based platforms, features like RTT play a critical role in making digital interactions more inclusive and accessible. RTT is not only a valuable feature—it is also essential for meeting global accessibility standards. Under the European Accessibility Act (Directive (EU) 2019/882), voice and video calling services in the European Union will be required to support RTT by June 2025. Azure Communication Services is committed to providing solutions that meet these evolving standards, ensuring that all users, regardless of ability, can engage in meaningful, accessible communication. Release Timeline Now Available: Public Preview release for the Native Calling SDK, enabling RTT for all voice and video calls except Azure Communication Services/Teams interop scenarios. January 2025: Public Preview release for the Native UI SDK, Web SDK, with the Web UI following later in the month. Future Plans: RTT functionality for Azure Communication Services/Teams interop scenarios will be available following its implementation in Teams. The General Availability (GA) timeline will be announced later this month. Developers and organizations can begin exploring RTT in Azure Communication Services now with the following resources: Conceptual Documentation: https://learn.microsoft.com/en-us/azure/communication-services/concepts/voice-video-calling/real-time-text Native QuickStart Guide: https://learn.microsoft.com/en-us/azure/communication-services/quickstarts/voice-video-calling/get-started-with-real-time-text?pivots=programming-language-csharp 3. Calling Native iOS SDK enable Picture-in-Picture Status: GA Multitasking has become an essential part of how we work and communicate today. With this in mind, Azure Communication Services has introduced Picture-in-Picture (PiP) mode for video calling applications. This powerful feature enhances user experience by allowing a video stream to continue in a floating, movable window while users navigate other applications on their devices. What Is Picture-in-Picture (PiP) Mode? PiP mode lets users keep their video calls visible and uninterrupted as they switch between apps or multitask. For example, healthcare professionals can input electronic health records (EHR) in Epic while maintaining video communication with patients. Similarly, users in industries like banking or customer service can seamlessly switch to other tasks without ending the call. How It Works The Native Calling SDK and UI makes it simple to implement PiP in your app. It provides built-in functionality for: Joining calls: Start and manage calls effortlessly. Rendering video streams: Display local and remote video streams within the PiP window. Managing permissions: The SDK handles user consent and system requirements, ensuring smooth operation of PiP. PiP keeps calls active in both the foreground and background. This ensures uninterrupted communication while users: Navigate to other apps. Switch between video streams. Return to the calling experience instantly via the floating PiP window. Why PiP Matters A traditional full-screen video UI can limit multitasking, but PiP empowers users to stay productive without sacrificing connectivity. Key benefits include: Improved workflow in multitasking scenarios. Continued access to video calls while using other apps. An intuitive user interface with minimal interruption. Technical Considerations PiP functionality depends on the capabilities of the device, such as CPU performance, RAM, and battery state. Supported devices ensure the PiP window is visible, movable, and easy to use, regardless of the app in focus. This feature further enhances the Azure Communication Services UI Library, enabling customers like Contoso to maintain active calls, even when navigating between custom activities like chat or task management. For more information, see QuickStart: https://learn.microsoft.com/en-us/azure/communication-services/how-tos/ui-library-sdk/picture-in-picture?tabs=kotlin&pivots=platform-android 4. Explicit consent for Teams meetings recording and transcription Web calling SDK: General availability Explicit consent for Teams meetings recording and transcription is now generally available in the Web calling SDK, enhancing user privacy and security. This feature ensures that participants must explicitly consent to being recorded and transcribed, which is crucial in environments with stringent privacy regulations. When a Teams meeting recording or transcription is initiated, participants' microphones and cameras are disabled until they provide consent using the new Azure Communication Services API. Once consent is given, participants can unmute and enable their cameras. If a user joins a meeting already in progress, they will follow the same procedure. However, this feature is not supported in Android, iOS, or Windows calling SDK, nor in the Web and Mobile UI library. It is only supported in Teams meetings and Teams group calls, with plans to expand within the broader Azure Communication Services ecosystem. To implement explicit consent for recording and transcription in your Teams meetings, you can use the following sample code to check if consent is required and to grant consent: const isConsentRequired = callRecordingApi.isTeamsConsentRequired; callRecordingApi.grantTeamsConsent(); Try out the new explicit consent feature in your Teams meetings today and ensure compliance with privacy regulations. For more information, read the detailed documentation. 5. Breakout rooms in Web calling SDK Status: Web calling SDK & Web UI library: General availability Breakout rooms are now available in the Web Calling SDK, enhancing flexibility and collaboration in online meetings. This feature allows participants to join smaller, focused groups within a larger meeting, boosting productivity and engagement. Whether it's dividing students into small groups for focused discussions, ensuring private and confidential discussions with clients, or conducting virtual consultations with private patient discussions, breakout rooms offer versatile and useful applications Breakout rooms enable participants to join an additional call linked to the main meeting. Users can join and return to the main room as set by the organizers. Participants can view members, engage in chat, and see details of the breakout room. Breakout room managers can access specific room information and join them. One limitation is that Azure Communication Services does not support the creation or management of breakout rooms, and this feature is not available in Android, iOS, and Windows calling SDK. Try out the new breakout rooms feature in the Web calling SDK and UI library today! For more information, read the detailed documentation. 6. Together mode in Web calling SDK Status: Web calling SDK - General availability Together Mode in the Web Calling SDK, available in Azure Communication Services, enhances virtual meetings by placing participants in a shared background, making it feel like everyone is in the same room. This feature uses AI to segment and arrange participants naturally, reducing distractions and improving focus. By creating a more immersive and engaging meeting experience, Together Mode helps teams feel more connected, even when they are miles apart. This feature is particularly useful for users with poor connectivity, as it allows them to save bandwidth by receiving a single video stream of all participants. Whether you're collaborating on a complex project, conducting training sessions, or holding virtual consultations, Together Mode ensures clear and focused communication. It enhances the overall meeting experience, making it more effective and engaging for various industries. Try out Together Mode in your next virtual meeting and experience the difference it makes. For more information and detailed instructions, visit the documentation. 7. Disable attendee's audio and video Web calling SDK: General availability The new media access control feature in the Web Calling SDK allows organizers, co-organizers, and presenters to manage attendees' audio and video in Microsoft Teams meetings and group calls. This feature provides enhanced control over participants' ability to enable their microphone or camera during a session, ensuring a more focused and controlled meeting experience. By reducing distractions and maintaining the meeting's flow, media access control helps create a more productive environment. With this feature, you can manage access for individuals or all attendees in the call, providing the flexibility to tailor the meeting experience as needed. Additionally, you can learn about the current media access of individual users and Teams meeting options, allowing you to provide the optimal user experience. // Define list of attendees const acsUser = new CommunicationUserIdentifier('<USER_ID>'); const teamsUser = new MicrosoftTeamsUserIdentifier('<USER_ID>'); const participants = [acsUser, teamsUser]; // Allow selected attendees to unmute mediaAccessFeature.permitAudio(participants); // Deny selected attendees to unmute mediaAccessFeature.forbidAudio(participants); // Allow selected attendees to turn on video mediaAccessFeature.permitVideo(participants); // Deny selected attendees to turn on video mediaAccessFeature.forbidVideo(participants); Try out the new Media access control feature today. For more detailed instructions and information, please refer to the documentation. Advanced Management and Analytics for Communication Services 1. Teams admins can view Azure Communication Services survey data in Teams support tools Status: GA When your Azure Communication Services SDKs submit a survey as part of any Teams interop meeting scenarios, the survey data will now be accessible through the Teams meeting organizer's support tools. This is in addition to the Azure Communication Services admins access in the Azure Monitor logs. This update lets Teams admins analyze subjective quality feedback from their Azure Communication Services meeting participants alongside their Teams participants. The specific Teams survey dimensions are referred to as ‘rating’ and can be located here. The Azure Communication Services survey data is available in the following Teams support tools: Teams Call Quality Dashboard and Teams Call Analytics: Monitor and improve call quality for Microsoft Teams Teams Call Quality Connector for Power BI: Use Power BI to analyze CQD data for Microsoft Teams - Microsoft Teams Teams Graph API: Microsoft Graph overview and userFeedback resource type – Microsoft Graph v1.0 For more information, see Azure Communication Services End of Call Survey overview 2. Identify web calling participants with custom data tags Status: GA Now developers can add up to three custom data attributes to call participants with the WebJS calling client and view them in Azure Monitor. You can use these customizable attributes to enhance your post-call analysis. Since you have control over the data creation, you can use it for A/B testing, labeling (e.g., west coast, release version, etc.). You can use Call Diagnostics to search for these attributes or create custom queries with Log Analytics. For more information, see: Tutorial on how to attach custom tags to your client telemetryIgnite 2024: Bidirectional real-time audio streaming with Azure Communication Services
Today at Microsoft Ignite, we are excited to announce the upcoming preview of bidirectional audio streaming for Azure Communication Services Call Automation SDK, which unlocks new possibilities for developers and businesses. This capability results in seamless, low-latency, real-time communication when integrated with services like Azure Open AI and the real-time voice APIs, significantly enhancing how businesses can build and deploy conversational AI solutions. With the advent of new AI technologies, companies are developing solutions to reduce customer wait times and improve the overall customer experience. To achieve this, many businesses are turning to AI-powered agents. These AI-based agents must be capable of having conversations with customers in a human-like manner while maintaining very low latencies to ensure smooth interactions. This is especially critical in the voice channel, where any delay can significantly impact the fluidity and natural feel of the conversation. With bidirectional streaming, businesses can now elevate their voice solutions to low-latency, human-like, interactive conversational AI agents. Our bidirectional streaming APIs enable developers to stream audio from an ongoing call on Azure Communication Services to their web server in real-time. On the server, powerful language models interpret the caller's query and stream the responses back to the caller. All this is accomplished while maintaining low latency, ensuring the caller feels like they are speaking to a human. One such example of this would be to take the audio streams and processing them through Azure Open AI’s real-time voice API and then streaming the responses back into the call. With the integration of bidirectional streaming into Azure Communication Services Call Automation SDK, developers have new tools to innovate: Leverage conversational AI Solutions: Develop sophisticated customer support virtual agents that can interact with customers in real-time, providing immediate responses and solutions. Personalized customer experiences: By harnessing real-time data, businesses can offer more personalized and dynamic customer interactions in real-time, leading to increased satisfaction and loyalty. Reduce wait times for customers: By using bidirectional audio streams in combination with Large Language Models (LLMs) you can build virtual agents that can be the first point of contact for customers reducing the need for customers waiting for a human agent being available. Integrating with real-time voice-based Large Language Models (LLMs) With the advancements in voice based LLMs, developers want to take advantage of services like bidirectional streaming and send audio directly between the caller and the LLM. Today we’ll show you how you can start audio streaming through Azure Communication Services. Developers can start bidirectional streaming at the time of answering the call by providing the WebSocket URL. //Answer call with bidirectional streaming websocketUri = appBaseUrl.Replace("https", "wss") + "/ws"; var options = new AnswerCallOptions(incomingCallContext, callbackUri) { MediaStreamingOptions = new MediaStreamingOptions( transportUri: new Uri(websocketUri), contentType: MediaStreamingContent.Audio, audioChannelType: MediaStreamingAudioChannel.Mixed, startMediaStreaming: true) { EnableBidirectional = true, AudioFormat = AudioFormat.Pcm24KMono } }; At the same time, you should open your connection with Azure Open AI real-time voice API. Once the WebSocket connection is setup, Azure Communication Services starts streaming audio to your webserver. From there you can relay the audio to Azure Open AI voice and vice versa. Once the LLM reasons over the content provided in the audio it streams audio to your service which you can stream back into the Azure Communication Services call. (More information about how to set this up will be made available after Ignite) //Receiving streaming data from Azure Communication Services over websocket private async Task StartReceivingFromAcsMediaWebSocket() { if (m_webSocket == null) return; try { while (m_webSocket.State == WebSocketState.Open || m_webSocket.State == WebSocketState.Closed) { byte[] receiveBuffer = new byte[2048]; WebSocketReceiveResult receiveResult = await m_webSocket.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), m_cts.Token); if (receiveResult.MessageType == WebSocketMessageType.Close) continue; var data = Encoding.UTF8.GetString(receiveBuffer).TrimEnd('\0'); if(StreamingData.Parse(data) is AudioData audioData) { using var ms = new MemoryStream(audioData.Data); await m_aiServiceHandler.SendAudioToExternalAI(ms); } } } catch (Exception ex) { Console.WriteLine($"Exception -> {ex}"); } } Streaming audio data back into Azure Communication Services //create and serialize streaming data private void ConvertToAcsAudioPacketAndForward( byte[] audioData ) { var audio = new OutStreamingData(MediaKind.AudioData) { AudioData = new AudioData(audioData) }; // Serialize the JSON object to a string string jsonString = System.Text.Json.JsonSerializer.Serialize<OutStreamingData>(audio); // Queue the async operation for later execution try { m_channel.Writer.TryWrite(async () => await m_mediaStreaming.SendMessageAsync(data)); } catch (Exception ex) { Console.WriteLine($"\"Exception received on ReceiveAudioForOutBound {ex}"); } } //Send encoded data over the websocket to Azure Communication Services public async Task SendMessageAsync(string message) { if (m_webSocket?.State == WebSocketState.Open) { byte[] jsonBytes = Encoding.UTF8.GetBytes(message); // Send the PCM audio chunk over WebSocket await m_webSocket.SendAsync(new ArraySegment<byte>(jsonBytes), WebSocketMessageType.Text, endOfMessage: true, CancellationToken.None); } } To reduce developer overhead when integrating with voice-based LLMs, Azure Communication Services supports a new sample rate of 24Khz, eliminating the need for developers to resample audio data and helping preserve audio quality in the process Next steps The SDK and documentation will be available in the next few weeks after this announcement, offering tools and information to integrate bidirectional streaming and utilize voice-based LLMs in your applications. Stay tuned and check our blog for updates!December 2024 Feature Updates
The Azure Communication Services team is excited to share several new product and feature updates released in September through December 2024. (You can view previous blog articles.) As the year ends, we have many features that are being released, and for readability have organized these features into three areas: Front-end APIs for voice and video calling. Noise suppression, new components in the open-source iOS and Android UI libraries, and new Teams interop features help virtual meeting and contact center applications deliver a high-quality end-user communication experience. Back-end APIs for voice and video calling. The Rooms and Call Automation APIs enable your services to route, manage, and structure both scheduled and unscheduled VOIP and video calling. We’ve added new capabilities for contact center applications and PSTN-enabled virtual meetings. APIs for SMS and Email. New 10DLC phone numbers supported and enhanced email APIs improve the effectiveness and scale of your SMS and email conversations and campaigns. Client (front-end) APIs for Voice & Video Calling Improve audio quality by enabling advanced Noise Suppression on Web Desktop browsers Status: GA Azure Communications Services now includes background audio noise suppression in its WebJS Calling SDK. This feature improves call quality by reducing background noise and ensuring that the speaker's voice remains clear and understandable. This technology is useful in environments with high levels of ambient noise, such as open offices or public spaces, where extraneous sounds can interfere with communication. By filtering out ambient noise, noise suppression helps participants concentrate on the conversation without interruptions. Advanced noise suppression models used by Azure Communication Services can manage various distracting noises, such as a dog barking and background conversations. For more information, see Tutorial: Add audio filters to improve the quality in your audio calling experience - An Azure Communication Services tutorial on how to enable advanced audio filters | Microsoft Learn Teams user interop calling Status: GA Azure Communication Services Calling applications can now directly call individual Microsoft Teams users. Those Teams users can be using Microsoft Teams or be an authenticated ACS Calling SDK endpoint. This feature makes Teams interoperability more complete; you can build custom ACS apps connecting people to: Individual Teams users Teams call queues and auto-attendants Teams meetings Business-2-consumer contact center and meeting applications can use these features to keep external customers in highly tailored websites and app experiences. Using this feature also keeps all employee and agent communication activity in a single hub: Teams. For more information, see Capabilities for Microsoft Teams users in Azure Communication Services calls. Native UI Library customization & accessibility Status: GA We have a suite of new features for the open source Calling Native UI Library that provide enhanced customization options and improved accessibility for developers building communication experiences on Android and iOS. Developers can use these APIs to make video calling better fit their brand identity, provide better user experiences, and ensure their services are accessible to a wider audience. Empowering Brands Change interface colors to match brand themes. Customize call title and subtitle for personalized interactions. Configure the button bar by adding, removing, or modifying action buttons to suit specific business workflows. Healthcare Providers: A telemedicine platform can now align its in-call interface with its brand colors, giving patients a familiar and trustworthy experience. Customizing the call title to display “Telemedicine Session” and adding subtitles like “Dr. Jane Doe” help ensure that patients know exactly whom they’re speaking with. Developers can further tailor the call interface by adding or removing buttons, such as a custom “End Consultation” button. Custom Workflows for Customer Support: Enterprises providing customer support through calling can now use customized buttons to streamline the user experience. For example, instead of a generic button layout, they can configure buttons like “Hold,” “Transfer to Supervisor,” or “Open Ticket” to match their specific operational workflows. This not only improves agent efficiency but also enhances customer satisfaction. Captions components Accessibility is a key consideration for businesses aiming to reach diverse audiences. Closed captions for Azure Communication Services and Teams interop calls can significantly enhance the communication experience for users with hearing impairments, or for situations where audio clarity may be compromised such as noisy environments. You are welcome to explore our tutorials to adjust colors, bar button layout, title and subtitle, and enable closed captions on your calls using the Calling Native UI Library. Native UI Library – Combined Call and Chat Status: GA The Call and Chat UI Library components are now available in GA for both Android and iOS. The Call and Chat UI Library samples provide ready-to-use code for using both Azure Communication Services call and chat functions. Customer Support Applications: Integrate real-time voice/video calls and chat to provide a seamless support experience for your customers. Using these samples, customer support teams can easily manage multiple conversations, record interactions, and provide live assistance; all while keeping a user-friendly experience. Telemedicine Platforms: Healthcare providers can leverage these samples to offer virtual consultations with real-time communication between doctors and patients. The call recording and chat history features ensure compliance and provide a clear record for follow-up care. Education Platforms: Create virtual classrooms with integrated video call and chat functions, enabling educators to engage with students in real time. Teachers can host live sessions while managing questions and discussions via chat for an enhanced learning experience. The Call and Chat UI Library Samples are available now: Android Sample iOS Sample Remote Mute VoIP participants Status: GA Conducting disruption free group meetings, virtual –appointments, and B2C engagements often require controls to manage noise from inattentive participants. A participant might be driving and speaking to their friends without realizing that their noise and conversation is being relayed to participants in the meeting. The ability to remotely mute a VoIP participant comes handy in such situations. It enables another participant to remotely mute one or more VoIP participants in the call. Participants who are muted can unmute themselves when they need to speak. The ability to remotely mute a participant is now generally available for Azure Communication Services calls with the following specific functions: A VoIP user remotely mutes all other VoIP participants in an Azure Communications Services Rooms and group calls using the following API: await call.muteAllRemoteParticipants(); A VoIP user remotely mutes one or several VoIP participants in an Azure communications services Rooms and group calls using the following API: await call.remoteParticipants[0].mute(); In Azure Communication Services Rooms calls, only VoIP users with “Presenter” role can mute other participants to avoid undesired remote mutes. When a local call participant is muted by another participant, it raises the mutedByOthers event. This event causes the client to notify the VoIP participant that they have been muted. For more information, please see: Manage calls - An Azure Communication Services how-to guide | Microsoft Learn Extended caller information Status: GA Incoming call notifications now include the caller line id (CLID) and calling party name (CNAM). This information can be used to identify the phone number of an incoming call. For more information, see CallerInfo interface and Manage Calls. const incomingCallHandler = async (args: { incomingCall: IncomingCall }) => { const incomingCall = args.incomingCall; // Get information about caller console.log(callerInfo.displayName); console.log(callerInfo.identifier); }; Service (back-end) APIs for Voice & Video Calling Call Automation and Rooms APIs for telephony enabled meetings Status: GA Developers use Azure Communication Services Rooms and Azure Communication Services Calling for a wide variety of scenarios: medical appointments, telebanking, virtual classrooms, and coaching. The Azure Communication Services Rooms API helps developers structure virtual meetings. The Azure Communication Services Call Automation APIs enables service applications to use REST APIs and server SDKs to answer phone calls, add VOIP users, or otherwise control the Azure Communication Services Calling system. These two systems now work together to support advanced meeting scenarios. One new feature we’re introducing is PSTN dial out from Rooms. Developers can use Call Automation to ring external interpreters, social services representatives, and other professionals to join the meeting. You can use phone numbers leased directly from Azure or numbers you bring via Azure Direct Connect. Many other Call Automation features, such as bidirectional audio streaming, are also available in Rooms managed calls. For more information, see: Azure Communication Services Rooms overview - An Azure Communication Services concept document | Microsoft Learn. Improved bot-to-user voice interactions with APIs for barge-in, hold, transfer & more Status: GA In addition to server programmability of Rooms and troubleshooting improvements, we’ve also made an array of other improvements to Call Automation that allow for more powerful bots and interactive voice response (IVR). Hold/Unhold: Provide developers with the capability to play music while putting participants on hold through supported file formats of WAV and MP3. Play multiple audio files: We've enhanced our existing Play and Recognize APIs to support the ability for developers to provide multiple audio files, Text, and SSML inputs when requesting a Play or Recognize action. Play barge-in: Developers can now provide barge-in capability to the Play action, enabling you to interrupt a current prompt, such as hold music, with a new message such as wait time announcement. Play started event: We're also enabling a playStarted event to let developers know that a play prompt has started. VoIP to PSTN transfer: Developers can now transfer VoIP users to PSTN/SIP endpoints. For inbound PSTN calls, the call connection object now contains the PSTN number the user dialed to. To get started with Call Automation, see: Call Automation overview - An Azure Communication Services concept document | Microsoft Learn. Troubleshooting improvements for Call Automation Status: GA We've made improvements to help developers troubleshoot Call Automation. Now, you receive notifications if the CreateCall or Answer APIs fail asynchronously through the new CreateCallFailed and AnswerFailed events. Along with these events, we provide error codes for various participant leave and call end scenarios, helping you make informed decisions about what to do next. We've also revamped the error code documentation to offer better guidance for handling issues independently. In addition, you can now view Call Automation callback events in Azure metrics. For more information, see: Our updated troubleshooting guide for troubleshooting response codes. Our docs on how to view Azure Communication Services Callback events via Azure Metrics. Call Recording Enhancements for Reliability Status: GA We have introduced new functionality within the Bring Your Own Storage(BYOS) for call recording. This enhancement now provides customers with the option to download their recordings and receive notifications if recording uploads to their storage fail due to misconfigurations. When the first attempt to upload to a customer’s blob storage fails, status and error codes are provided. These codes address common issues such as: Managed Identity not enabled Permissions not set up correctly Container does not exist Invalid container name or storage path These error messages aim to reduce the loss of recordings by providing timely notifications for manual action (such as direct download) and guiding customers to resolve configuration issues for BYOS. APIs for SMS & Email 10 Digit Long Code SMS Status: Public Preview We’re excited to announce the public preview launch of 10-digit long code (10DLC) SMS in Azure Communication Services, providing enterprises with a trusted and scalable messaging solution to connect with their customers efficiently and compliantly. What is 10DLC SMS? 10DLC SMS is a dedicated messaging channel designed for businesses to send messages using local phone numbers. 10DLC offers a unique, registered phone number for your business, enhancing trust and ensuring compliance with carrier regulations. Perfect for transactional alerts, promotional messages, and customer service, 10DLC ensures higher message deliverability while adhering to industry standards. Benefits of Using 10DLC SMS: Improved Deliverability: 10DLC ensures higher message deliverability compared to traditional long codes, making it an effective way to ensure your messages reach your customers. Local Presence: Using a local 10-digit number provides a more personal and trusted connection with your customers, increasing engagement and response rates. Cost-effective: 10DLC offers a more affordable option compared to short codes, providing businesses with an efficient and cost-effective way to send high-volume messages. Versatility: Perfect for various use cases, including transactional messages, customer support, promotions, and marketing campaigns. Documentation Links: SMS Concepts Apply for 10DLC numbers SMS FAQ Enhance email communication with inline attachments Status: Public Preview The Azure Communication Service email service now supports inline image attachments. Email communication is more than just text. It's about creating engaging and visually appealing messages that capture the recipient's attention. One way to engage email recipients is by using inline attachments, which enable you to embed images directly within the email body. Inline attachments are images or other media files that are embedded directly within the email content, rather than being sent as separate attachments. Inline attachments let the recipient view the images as part of the email body, enhancing the overall visual appeal and engagement. Using inline attachments Inline attachments are typically used for: Improved Engagement: Inline images can make your emails more visually appealing and engaging. Better Branding: Embedding your logo or other brand elements directly in the email can reinforce your brand identity. Enhanced User Experience: Inline images can help illustrate your message more effectively, making it easier for recipients to understand and act on your content. Benefits of using CID for inline attachments We use the HTML attribute content-ID (CID) to embed images directly into the email body. Using CID for inline attachments is considered the best approach for the following reasons: Reliability: CID embedding references the image data using a unique identifier, rather than embedding the data directly in the email body. CID embedding ensures that the images are reliably displayed across different email clients and platforms. Efficiency: CID enables you to attach the image to the email and reference it within the HTML content using the unique content-ID. This method is more efficient than base64 encoding, which can significantly increase the size of the email and affect deliverability. Compatibility: CID is supported by most email clients, ensuring that your inline images are displayed correctly for most recipients. Security: Using CID avoids the need to host images on external servers, which can pose security risks. Instead, the images are included as part of the email, reducing the risk of external content being blocked or flagged as suspicious. For more information, see: Using inline attachments Quickstart - Send email with attachments using Azure Communication Services Quickstart - Send email with inline attachments using Azure Communication Services Multiple custom domains per Azure Communication Services email resource Status: Public Preview Developers can now connect multiple custom domains with the same Azure Communication Services resource. This feature enables Developers to manage their Azure Communication Services resources more effectively to support various business applications or customers using different custom domains. Some scenarios where this feature is useful include: Messaging organizations that need to support multiple custom domains across several applications can use one Azure Communication Services resource to manage and support these applications, reducing resource management efforts. SaaS service providers can manage many customers with fewer Azure Communication Services resources. Note: We enable customers to link up to 100 custom domains to a single communication service resource. All Mail-From addresses configured under these custom domains are accessible for the communication service resource. You can only link verified custom domains. For more information on connecting verified domains, see: How to connect a verified email domain - An Azure Communication Services quick start guide | Microsoft Learn Support for customer provided Message-Id in email headers Status: Public Preview Azure Communication Services recently released an update that respects the customer provided unique message-ids in email headers. Many customers use their custom message-ids to monitor the entire lifecycle of the messages. Prior to this release, the Azure Communication Services platform generated a unique message-id for every request before delivery, requiring customers to map these message-ids within their applications. With the new release, if the custom message-ids provided by customers are unique, the Azure Communication Services platform doesn’t override them. This enhancement enables customers to directly correlate delivery analytics from the Azure Communication Services platform with their internal application analytics. Examples of customer use cases for custom message-ids include marketing campaigns and maintaining conversational context.