diff --git a/homeassistant/components/voip/manifest.json b/homeassistant/components/voip/manifest.json index 345480da363..594abc69c13 100644 --- a/homeassistant/components/voip/manifest.json +++ b/homeassistant/components/voip/manifest.json @@ -7,5 +7,5 @@ "documentation": "https://www.home-assistant.io/integrations/voip", "iot_class": "local_push", "quality_scale": "internal", - "requirements": ["voip-utils==0.0.7"] + "requirements": ["voip-utils==0.1.0"] } diff --git a/homeassistant/components/voip/voip.py b/homeassistant/components/voip/voip.py index 32cfbd70337..3d0681a8475 100644 --- a/homeassistant/components/voip/voip.py +++ b/homeassistant/components/voip/voip.py @@ -11,7 +11,13 @@ import time from typing import TYPE_CHECKING import async_timeout -from voip_utils import CallInfo, RtpDatagramProtocol, SdpInfo, VoipDatagramProtocol +from voip_utils import ( + CallInfo, + RtcpState, + RtpDatagramProtocol, + SdpInfo, + VoipDatagramProtocol, +) from homeassistant.components import stt, tts from homeassistant.components.assist_pipeline import ( @@ -46,7 +52,10 @@ _LOGGER = logging.getLogger(__name__) def make_protocol( - hass: HomeAssistant, devices: VoIPDevices, call_info: CallInfo + hass: HomeAssistant, + devices: VoIPDevices, + call_info: CallInfo, + rtcp_state: RtcpState | None = None, ) -> VoipDatagramProtocol: """Plays a pre-recorded message if pipeline is misconfigured.""" voip_device = devices.async_get_or_create(call_info) @@ -70,6 +79,7 @@ def make_protocol( hass, "problem.pcm", opus_payload_type=call_info.opus_payload_type, + rtcp_state=rtcp_state, ) vad_sensitivity = pipeline_select.get_vad_sensitivity( @@ -86,6 +96,7 @@ def make_protocol( Context(user_id=devices.config_entry.data["user"]), opus_payload_type=call_info.opus_payload_type, silence_seconds=VadSensitivity.to_seconds(vad_sensitivity), + rtcp_state=rtcp_state, ) @@ -101,13 +112,14 @@ class HassVoipDatagramProtocol(VoipDatagramProtocol): session_name="voip_hass", version=__version__, ), - valid_protocol_factory=lambda call_info: make_protocol( - hass, devices, call_info + valid_protocol_factory=lambda call_info, rtcp_state: make_protocol( + hass, devices, call_info, rtcp_state ), - invalid_protocol_factory=lambda call_info: PreRecordMessageProtocol( + invalid_protocol_factory=lambda call_info, rtcp_state: PreRecordMessageProtocol( hass, "not_configured.pcm", opus_payload_type=call_info.opus_payload_type, + rtcp_state=rtcp_state, ), ) self.hass = hass @@ -147,6 +159,7 @@ class PipelineRtpDatagramProtocol(RtpDatagramProtocol): tone_delay: float = 0.2, tts_extra_timeout: float = 1.0, silence_seconds: float = 1.0, + rtcp_state: RtcpState | None = None, ) -> None: """Set up pipeline RTP server.""" super().__init__( @@ -154,6 +167,7 @@ class PipelineRtpDatagramProtocol(RtpDatagramProtocol): width=WIDTH, channels=CHANNELS, opus_payload_type=opus_payload_type, + rtcp_state=rtcp_state, ) self.hass = hass @@ -454,6 +468,7 @@ class PreRecordMessageProtocol(RtpDatagramProtocol): opus_payload_type: int, message_delay: float = 1.0, loop_delay: float = 2.0, + rtcp_state: RtcpState | None = None, ) -> None: """Set up RTP server.""" super().__init__( @@ -461,6 +476,7 @@ class PreRecordMessageProtocol(RtpDatagramProtocol): width=WIDTH, channels=CHANNELS, opus_payload_type=opus_payload_type, + rtcp_state=rtcp_state, ) self.hass = hass self.file_name = file_name diff --git a/requirements_all.txt b/requirements_all.txt index 79f8926932c..b0d6425d442 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2614,7 +2614,7 @@ venstarcolortouch==0.19 vilfo-api-client==0.4.1 # homeassistant.components.voip -voip-utils==0.0.7 +voip-utils==0.1.0 # homeassistant.components.volkszaehler volkszaehler==0.4.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 5e1af46951c..51f614a685f 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1914,7 +1914,7 @@ venstarcolortouch==0.19 vilfo-api-client==0.4.1 # homeassistant.components.voip -voip-utils==0.0.7 +voip-utils==0.1.0 # homeassistant.components.volvooncall volvooncall==0.10.3