@@ -12,6 +12,10 @@ import {
1212 MultiChannelMessageRequest ,
1313 MessageDirectionEnum ,
1414 RbmActionTypeEnum ,
15+ CardWidthEnum ,
16+ RbmMediaHeightEnum ,
17+ RbmCardContent ,
18+ RbmMessageCarouselCard ,
1519 RbmMessageMedia ,
1620 RbmActionDial ,
1721 MultiChannelChannelListRBMResponseObject ,
@@ -292,4 +296,92 @@ describe('MultiChannelApi', () => {
292296 expect ( rbmContent . cardContent . title ) . toBeString ( ) ;
293297 } ) ;
294298 } ) ;
299+
300+ describe ( 'createMultiChannelRBMRichCarouselMessage' , ( ) => {
301+ test ( 'should create a multi-channel RBM carousel rich card message' , async ( ) => {
302+ const carouselCard : RbmCardContent = {
303+ title : "Card 1 Title" ,
304+ description : "Card 1 Description" ,
305+ media : {
306+ fileUrl : "https://example.com/image.jpg" ,
307+ thumbnailUrl : "https://example.com/thumbnail.jpg" ,
308+ height : RbmMediaHeightEnum . Tall
309+ } ,
310+ suggestions : [ {
311+ type : RbmActionTypeEnum . DialPhone ,
312+ text : "Call Us" ,
313+ postbackData : "tel:+1234567890" ,
314+ phoneNumber : BW_NUMBER
315+ } ]
316+ } ;
317+
318+ const content : RbmMessageCarouselCard = {
319+ cardWidth : CardWidthEnum . Medium ,
320+ cardContents : [
321+ carouselCard ,
322+ { title : "Card 2 Title" }
323+ ]
324+ } ;
325+
326+ const channelListObject : MultiChannelChannelListRBMObject = {
327+ from : BW_NUMBER ,
328+ applicationId : BW_MESSAGING_APPLICATION_ID ,
329+ channel : MultiChannelMessageChannelEnum . Rbm ,
330+ content,
331+ } ;
332+
333+ const multiChannelMessageRequest : MultiChannelMessageRequest = {
334+ to : USER_NUMBER ,
335+ tag : "tag" ,
336+ priority : PriorityEnum . High ,
337+ expiration,
338+ channelList : [ channelListObject ] ,
339+ } ;
340+
341+ const { status, data } = await multiChannelApi . createMultiChannelMessage (
342+ BW_ACCOUNT_ID ,
343+ multiChannelMessageRequest
344+ ) ;
345+
346+ expect ( status ) . toEqual ( 202 ) ;
347+ expect ( data . links ) . toBeArray ( ) ;
348+ expect ( data . data ?. id ) . toBeString ( ) ;
349+ expect ( data . data ?. time ) . toBeDateString ( ) ;
350+ expect ( data . data ?. direction ) . toBeOneOf ( Object . values ( MessageDirectionEnum ) ) ;
351+ expect ( data . data ?. to ) . toBeArray ( ) ;
352+ expect ( data . data ?. tag ) . toBeString ( ) ;
353+ expect ( data . data ?. priority ) . toBeOneOf ( Object . values ( PriorityEnum ) ) ;
354+ expect ( data . data ?. expiration ) . toBeDateString ( ) ;
355+ expect ( data . data ?. channelList ) . toBeArray ( ) ;
356+ expect ( data . data ?. channelList ! [ 0 ] ) . toBeObject ( ) ;
357+ const channelListObject = data . data ?. channelList ! [ 0 ] as MultiChannelChannelListRBMResponseObject ;
358+ expect ( channelListObject . from ) . toEqual ( BW_NUMBER ) ;
359+ expect ( channelListObject . applicationId ) . toEqual ( BW_MESSAGING_APPLICATION_ID ) ;
360+ expect ( channelListObject . channel ) . toEqual ( MultiChannelMessageChannelEnum . Rbm ) ;
361+ expect ( channelListObject . content ) . toBeObject ( ) ;
362+ expect ( channelListObject . owner ) . toEqual ( BW_NUMBER ) ;
363+ const rbmContent = channelListObject . content as RbmMessageCarouselCard ;
364+ expect ( rbmContent . cardWidth ) . toEqual ( CardWidthEnum . Medium ) ;
365+ expect ( rbmContent . cardContents ) . toBeArray ( ) ;
366+ expect ( rbmContent . cardContents ) . toHaveLength ( 2 ) ;
367+ expect ( rbmContent . cardContents [ 0 ] ) . toBeObject ( ) ;
368+ const firstCard = rbmContent . cardContents [ 0 ] as RbmCardContent ;
369+ expect ( firstCard . title ) . toBeString ( ) ;
370+ expect ( firstCard . description ) . toBeString ( ) ;
371+ expect ( firstCard . media ) . toBeObject ( ) ;
372+ expect ( firstCard . media ! . fileUrl ) . toBeString ( ) ;
373+ expect ( firstCard . media ! . thumbnailUrl ) . toBeString ( ) ;
374+ expect ( firstCard . media ! . height ) . toEqual ( RbmMediaHeightEnum . Tall ) ;
375+ expect ( firstCard . suggestions ) . toBeArray ( ) ;
376+ expect ( firstCard . suggestions [ 0 ] ) . toBeObject ( ) ;
377+ const rbmActionDial = firstCard . suggestions [ 0 ] as RbmActionDial ;
378+ expect ( rbmActionDial . type ) . toEqual ( RbmActionTypeEnum . DialPhone ) ;
379+ expect ( rbmActionDial . text ) . toBeString ( ) ;
380+ expect ( rbmActionDial . postbackData ) . toBeString ( ) ;
381+ expect ( rbmActionDial . phoneNumber ) . toBeString ( ) ;
382+ expect ( rbmContent . cardContents [ 1 ] ) . toBeObject ( ) ;
383+ const secondCard = rbmContent . cardContents [ 1 ] as RbmCardContent ;
384+ expect ( secondCard . title ) . toBeString ( ) ;
385+ } ) ;
386+ } ) ;
295387} ) ;
0 commit comments