@@ -118,4 +118,106 @@ export class WhatsappClient {
118118 "/v1/convai/whatsapp/outbound-call" ,
119119 ) ;
120120 }
121+
122+ /**
123+ * Send an outbound message via WhatsApp
124+ *
125+ * @param {ElevenLabs.conversationalAi.BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePost } request
126+ * @param {WhatsappClient.RequestOptions } requestOptions - Request-specific configuration.
127+ *
128+ * @throws {@link ElevenLabs.UnprocessableEntityError }
129+ *
130+ * @example
131+ * await client.conversationalAi.whatsapp.outboundMessage({
132+ * whatsappPhoneNumberId: "whatsapp_phone_number_id",
133+ * whatsappUserId: "whatsapp_user_id",
134+ * templateName: "template_name",
135+ * templateLanguageCode: "template_language_code",
136+ * templateParams: [{
137+ * type: "body",
138+ * parameters: [{
139+ * text: "text"
140+ * }]
141+ * }],
142+ * agentId: "agent_id"
143+ * })
144+ */
145+ public outboundMessage (
146+ request : ElevenLabs . conversationalAi . BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePost ,
147+ requestOptions ?: WhatsappClient . RequestOptions ,
148+ ) : core . HttpResponsePromise < ElevenLabs . WhatsAppOutboundMessageResponse > {
149+ return core . HttpResponsePromise . fromPromise ( this . __outboundMessage ( request , requestOptions ) ) ;
150+ }
151+
152+ private async __outboundMessage (
153+ request : ElevenLabs . conversationalAi . BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePost ,
154+ requestOptions ?: WhatsappClient . RequestOptions ,
155+ ) : Promise < core . WithRawResponse < ElevenLabs . WhatsAppOutboundMessageResponse > > {
156+ const _headers : core . Fetcher . Args [ "headers" ] = mergeHeaders (
157+ this . _options ?. headers ,
158+ mergeOnlyDefinedHeaders ( { "xi-api-key" : requestOptions ?. apiKey ?? this . _options ?. apiKey } ) ,
159+ requestOptions ?. headers ,
160+ ) ;
161+ const _response = await ( this . _options . fetcher ?? core . fetcher ) ( {
162+ url : core . url . join (
163+ ( await core . Supplier . get ( this . _options . baseUrl ) ) ??
164+ ( await core . Supplier . get ( this . _options . environment ) ) ??
165+ environments . ElevenLabsEnvironment . Production ,
166+ "v1/convai/whatsapp/outbound-message" ,
167+ ) ,
168+ method : "POST" ,
169+ headers : _headers ,
170+ contentType : "application/json" ,
171+ queryParameters : requestOptions ?. queryParams ,
172+ requestType : "json" ,
173+ body : serializers . conversationalAi . BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePost . jsonOrThrow (
174+ request ,
175+ { unrecognizedObjectKeys : "strip" } ,
176+ ) ,
177+ timeoutMs : ( requestOptions ?. timeoutInSeconds ?? this . _options ?. timeoutInSeconds ?? 240 ) * 1000 ,
178+ maxRetries : requestOptions ?. maxRetries ?? this . _options ?. maxRetries ,
179+ abortSignal : requestOptions ?. abortSignal ,
180+ fetchFn : this . _options ?. fetch ,
181+ logging : this . _options . logging ,
182+ } ) ;
183+ if ( _response . ok ) {
184+ return {
185+ data : serializers . WhatsAppOutboundMessageResponse . parseOrThrow ( _response . body , {
186+ unrecognizedObjectKeys : "passthrough" ,
187+ allowUnrecognizedUnionMembers : true ,
188+ allowUnrecognizedEnumValues : true ,
189+ breadcrumbsPrefix : [ "response" ] ,
190+ } ) ,
191+ rawResponse : _response . rawResponse ,
192+ } ;
193+ }
194+
195+ if ( _response . error . reason === "status-code" ) {
196+ switch ( _response . error . statusCode ) {
197+ case 422 :
198+ throw new ElevenLabs . UnprocessableEntityError (
199+ serializers . HttpValidationError . parseOrThrow ( _response . error . body , {
200+ unrecognizedObjectKeys : "passthrough" ,
201+ allowUnrecognizedUnionMembers : true ,
202+ allowUnrecognizedEnumValues : true ,
203+ breadcrumbsPrefix : [ "response" ] ,
204+ } ) ,
205+ _response . rawResponse ,
206+ ) ;
207+ default :
208+ throw new errors . ElevenLabsError ( {
209+ statusCode : _response . error . statusCode ,
210+ body : _response . error . body ,
211+ rawResponse : _response . rawResponse ,
212+ } ) ;
213+ }
214+ }
215+
216+ return handleNonStatusCodeError (
217+ _response . error ,
218+ _response . rawResponse ,
219+ "POST" ,
220+ "/v1/convai/whatsapp/outbound-message" ,
221+ ) ;
222+ }
121223}
0 commit comments