Bu özelliğin kullanılabilmesi için servisin HTTP POST veya HTTPS POST ile JSON formatında mesaj kabul edecek bir Restful Web Service açması gerekmektedir. HTTP POST kullanıldığında authentication gerekmez, HTTPS POST kullanıldığında basic authentication gerekir. Basic Authentication için servis tanım sürecinde verilen username ve password kullanılır.
| Özellik | Değer | Açıklama |
|---|---|---|
| msgId | string | Karsılıklı sistem loglarında inceleme yapılması gerektiğinde kullanılacak ortak bilgi |
| serviceId | string | Servis tanım sürecinde verilen service id |
| transferData | string | REX sistemi dış sistemdeki bir web servis ile iletişim kurulacağı zaman dinamik parametre geçişine imkan sağlar. Dinamik parametreler map yapısı içinde key/value çiftleri halinde iletilir. bip_parameter komutu ile AIML içinden dinamik parametre iletmek mümkündür. Dinamik bilgiler transferData alanında gönderilir. Kullanımı zorunlu değildir |
| Özellik | Değer | Açıklama |
|---|---|---|
| msgId | Karsılıklı sistem loglarında inceleme yapılması gerektiğinde kullanılacak ortak bilgi. | |
| composition | Composition | WS ten dönülen mesaj dizisi (list) |
| list | List | |
| type | Integer | Mesaj türü 0 : Metin 2 : Image 3 : Audio 4 : Video 7 : Lokasyon 8 : Zengin İçerikli Mesaj 13 : Media Mesajı ( TMM ) |
| tmmType | Integer | type = 13 iken; 0 : Tekli Media 1 : Çoklu Media 2 : Anket Media 3 : Hızlı cevap Media 4 : Sıralı Media |
| tmmSingle | type = 13, tmmType = 0 iken gönderilir. | |
| tmmMultiple | type = 13, tmmType = 1 iken gönderilir. | |
| tmmQuickReply | type = 13, tmmType = 3 iken gönderilir. | |
| tmmCarousel | type = 13, tmmType = 4 iken gönderilir. | |
| tmmPoll | type = 13, tmmType = 2 iken gönderilir. | |
| richmediatype | type = 8 iken; 4 : Onay sorusu (Consent Simple) 5 : Input alan Onay sorusu (Consent Input ) 6 : Onay sorusunun cevabı ( Consent Simplme Response ) 7 : Input alan Onay sorusunun cevabı ( Consent Input Response ) | |
| message | String | Metin mesajları için kullanıcının okuyacağı UTF-8 karakter dizisidir. Resim, ses ve video için ilgili media dosyasının bulunduğu URL bilgisidir. (Not: Resim, ses ve video dosyalarının BIP uygulamasında düzgün görüntülenebilmesi için öncelikle FTS sunucusuna yüklenmesi gerekmektedir). |
| data | Map | Key/Value yapısında bilgi taşıyabilen liste yapısı. Her mesaj tipine göre farklı key/value içeriği yer alabilir. Doldurulması zorunlu değildir. Dosyaların gönderimi için gerekli olan size-width-height bilgilerinin Servis Sağlayıcı tarafından ir sefer hesaplanıp “data” alanı içinde REX e gönderilmesi tavsiye edilir. Ancak zorunlu değildir. |
Composition list’i içindeki type’a göre Optional data değerleri
Text: Map yapısı bilgisi gerekmez.
Image:
Audio:
size : Dosyanın boyutu (bytes). Gönderimi zorunlu değildir.
Video:
Sticker: Map yapısı bilgisi gerekmez. Gönderimi zorunlu değildir.
Caps:
Location:
title: Gönderimi zorunlu değildir.
desc : Gönderimi zorunlu değildir.
REX ten WS yönüne bip_webservice_call ve bip_webservice_query ile yapılan isteklerde şu an sadece type = 0 ( Metin ) mesajlarin gönderimi desteklenmektedir.
AIML içinden DOLAR kurunu sorgulamak amaçlı bir web servis çağrılmak istendiğinde, bip_parameter komutuyla aşağıdakine benzer dinamik parametre tanımları yapılır ve istek JSON içinde transferData alanında gönderilmesi sağlanır. TransferData alanında gönderilen farklı bilgilerle hangi amaçla web servis çağrılmak istendiği ayırt edilmelidir. Bu sayede aynı web servis birden çok amaca hizmet edebilecek şekilde yazılabilinir.
<bip_webservice_call host="EXTERNAL_WS_URL">
<bip_parameter name='sender'><bip_sender/></bip_parameter>
<bip_parameter name='action'>DOLAR</bip_parameter>
<bip_webservice_call_result var='wscallresult' />
</bip_webservice_call>
Dış sistem ws ‘ine aşağıdaki JSON isteği yapılır;
{
"transferData":{
"sender":"9053XXXXXXXX",
"action":"DOLAR"
},
"msgId":"1",
"serviceId":8309
}
Dış sistem ws ‘inde dönebilecek örnek JSON;
{
"msgId":"1",
"composition":{
"list":[
{
"type":0,
"message":"Değerli müşterimiz, USD = 2,9660\r\nCep Şubesi ile işlemlerinizi dilediğiniz zaman dilediğiniz yerden gerçekleştirmek için tıklayın."
},
{
"type":2,
"message":"https://timsac.turkcell.com.tr/scontent/p2p/14112016/11/P1e646f5c03a7b4b44f6da1329ac218e322da72356e79e5116dff86e3fc255a228.png",
"data":{
"height":762,
"width":1000,
"size":684728
}
},
{
"type":3,
"message":"https://timsac.turkcell.com.tr/scontent/p2p/04032016/05/A796cf1d3ec44217f7fcb3d92a1d8fa4dc244abc2ff6b72004ce6589d6b532e0a5.mp3",
"data":{
"size":28976
}
},
{
"type":4,
"message":"https://timsac.turkcell.com.tr/scontent/p2p/04032016/10/Vedb8d12f22a3ac286622841e61203b2d09805a24c893c47548d98ef675e771295.mp4",
"data":{
"height":353,
"width":353,
"size":5230592
}
},
{
"type":7,
"data":{
"lon":29.117432,
"lat":40.95579
}
}
]
}
}
JSON da geçen “that” alanı zorunlu değildir. “that” ile verilen değer kullanılarak AIML içinden verilen cevaplar karşılanabilinir.
{
"msgId":"125df2e0-cacb-49a2-a948-87ce040c4b64_92 ",
"composition":{
"list":[
{
"type":13,
"tmmType":0,
"tmmSingle":{
"title":"msg title",
"description":"ws call msg desc",
"image":{
"url":"https://timsac.turkcell.com.tr/scontent/p2p/14112016/11/P1e646f5c03a7b4b44f6da1329ac218e322da72356e79e5116dff86e3fc255a228.png",
"ratio":1.0,
"button":{
"type":0,
"name":"button-1",
"url":"https://www.google.com.tr"
}
},
"buttonlist":[
{
"type":0,
"name":"button-2",
"url":"https://www.google.com.tr"
},
{
"type":1,
"name":"button-3",
"payload":"Payload_2001__POSTBACK"
}
],
"postbackid":"PostbackTMM_EXTWS_1500554388650_END",
"that":"getstmm"
}
}
]
}
}
Tekli Medya (STMM) mesajına verilen cevabın Dış sistem ws’ine iletilmesi;
{
"msgId":"88c80bf5-4007-4816-ac0d-e4d6d8c22e9f_94 ",
"serviceId":8332,
"content":{
"type":103,
"tmmType":0,
"tmmPostbackResponse":{
"payload":"Payload_2001__POSTBACK",
"postbackid":"PostbackTMM_EXTWS_1500554388650_END"
}
}
}
Tekli Medya (STMM) mesajına verilen cevabın AIML içinde yakalanmak istenmesi;
<aiml version='1.0.1' encoding='UTF-8'>
<category>
<pattern>*</pattern>
<that type='bip_webservice_call'>getstmm</that>
<template>STMM de <star/> secildi.
</template>
</category>
</aiml>
JSON da geçen “that” alanı zorunlu değildir. “that” ile verilen değer kullanılarak AIML içinden verilen cevaplar karşılanabilinir.
{
"msgId":"7c206035-a1a8-4913-89f1-de327d4c2340_96 ",
"composition":{
"list":[
{
"type":13,
"tmmType":1,
"tmmMultiple":{
"maintitle":"msg title",
"maindescription":"msg desc",
"mainimage":{
"url":"https://timsac.turkcell.com.tr/scontent/p2p/14112016/11/P1e646f5c03a7b4b44f6da1329ac218e322da72356e79e5116dff86e3fc255a228.png",
"ratio":1.0,
"button":{
"type":0,
"name":"button-1",
"url":"https://www.google.com.tr"
}
},
"mainbuttonlist":[
{
"type":0,
"name":"button-2",
"url":"https://www.google.com.tr"
},
{
"type":1,
"name":"button-3",
"payload":"Payload_3001__POSTBACK"
}
],
"sublist":[
{
"title":"msg title 1",
"description":"msg desc 1 ",
"image":{
"url":"https://timsac.turkcell.com.tr/scontent/p2p/14112016/11/P1e646f5c03a7b4b44f6da1329ac218e322da72356e79e5116dff86e3fc255a228.png",
"ratio":1.0,
"button":{
"type":0,
"name":"button-4",
"url":"https://www.google.com.tr"
}
},
"buttonlist":[
{
"type":0,
"name":"button-5",
"url":"https://www.google.com.tr"
},
{
"type":1,
"name":"button-6",
"payload":"Payload_3003__POSTBACK"
}
]
},
{
"title":"msg title 2",
"description":"msg desc 2",
"image":{
"url":"https://timsac.turkcell.com.tr/scontent/p2p/14112016/11/P1e646f5c03a7b4b44f6da1329ac218e322da72356e79e5116dff86e3fc255a228.png",
"ratio":1.0,
"button":{
"type":0,
"name":"button-7",
"url":"https://www.google.com.tr"
}
},
"buttonlist":[
{
"type":0,
"name":"button-8",
"url":"https://www.google.com.tr"
},
{
"type":1,
"name":"button-9",
"payload":"Payload_3005__POSTBACK"
}
]
}
],
"postbackid":"PostbackTMM_EXTWS_1500554580836_END",
"that":"getmtmm"
}
}
]
}
}
Çoklu Media (MTMM) mesajına verilen cevabın Dış sistem ws’ine iletilmesi;
{
"msgId":"7527963d-0767-4bc4-afe9-7843ee116030_100 ",
"serviceId":8332,
"content":{
"type":103,
"tmmType":1,
"tmmPostbackResponse":{
"payload":"Payload_3001__POSTBACK",
"postbackid":"PostbackTMM_EXTWS_1500554580836_END"
}
}
}
Çoklu Media (MTMM) mesajına verilen cevabın AIML içinde yakalanmak istenmesi;
<aiml version='1.0.1' encoding='UTF-8'>
<category>
<pattern>*</pattern>
<that type='bip_webservice_call'>getmtmm</that>
<template>MTMM de <star/> secildi.
</template>
</category>
</aiml>
JSON da geçen “that” alanı zorunlu değildir. “that” ile verilen değer kullanılarak AIML içinden verilen cevaplar karşılanabilinir.
{
"msgId":"acffb97a-a10b-43e8-94f1-6831b6385f22_103 ",
"composition":{
"list":[
{
"type":13,
"tmmType":4,
"tmmCarousel":{
"list":[
{
"title":"msg title 1",
"description":"msg desc 1 ",
"image":{
"url":"https://timsac.turkcell.com.tr/scontent/p2p/14112016/11/P1e646f5c03a7b4b44f6da1329ac218e322da72356e79e5116dff86e3fc255a228.png",
"ratio":1.0
},
"buttonlist":[
{
"type":0,
"name":"button-1",
"url":"https://www.google.com.tr"
},
{
"type":1,
"name":"button-2",
"payload":"Payload_4001__POSTBACK"
}
]
},
{
"title":"msg title 2",
"description":"msg desc 2",
"image":{
"url":"https://timsac.turkcell.com.tr/scontent/p2p/14112016/11/P1e646f5c03a7b4b44f6da1329ac218e322da72356e79e5116dff86e3fc255a228.png",
"ratio":1.0
},
"buttonlist":[
{
"type":0,
"name":"button-3",
"url":"https://www.google.com.tr"
},
{
"type":1,
"name":"button-4",
"payload":"Payload_4003__POSTBACK"
}
]
}
],
"postbackid":"PostbackTMM_EXTWS_1500554889863_END",
"that":"getcarousel"
}
}
]
}
}
Sıralı Media (CarouselTMM) mesajına verilen cevabın Dış sistem ws’ine iletilmesi;
{
"msgId":"f654518c-a477-4995-a4e9-c4e4a86cffd3_116 ",
"serviceId":8332,
"content":{
"type":103,
"tmmType":4,
"tmmPostbackResponse":{
"payload":"Payload_4001__POSTBACK",
"postbackid":"PostbackTMM_EXTWS_1500554889863_END"
}
}
}
JSON da geçen “that” alanı zorunlu değildir. “that” ile verilen değer kullanılarak AIML içinden verilen cevaplar karşılanabilinir Hızlı Cevap Media (QuickReplyTMM) mesajına verilen cevabın Dış sistem ws’ine iletilmesi;
{
"msgId":"23015fdd-238c-4ecb-ba11-cdef0acdda40_112 ",
"composition":{
"list":[
{
"type":13,
"tmmType":3,
"tmmQuickReply":{
"buttonlist":[
{
"type":1,
"name":"button-1",
"payload":"Payload_5000__POSTBACK"
},
{
"type":1,
"name":"button-2",
"payload":"Payload_5001__POSTBACK"
}
],
"postbackid":"PostbackTMM_EXTWS_1500555113801_END",
"that":"getquickreply"
}
}
]
}
}
{
"msgId":"5165c34a-6d98-41c2-bbca-8799a1676f8f_136 ",
"serviceId":8332,
"content":{
"type":103,
"tmmType":3,
"tmmPostbackResponse":{
"payload":"Payload_5001__POSTBACK",
"postbackid":"PostbackTMM_EXTWS_1500555113801_END"
}
}
}
{
"msgId":"2a1be83c-79d5-4163-862c-54769967eb65_119 ",
"composition":{
"list":[
{
"type":13,
"tmmType":2,
"tmmPoll":{
"title":"msg title",
"description":"msg desc",
"image":{
"url":"https://timsac.turkcell.com.tr/scontent/p2p/14112016/11/P1e646f5c03a7b4b44f6da1329ac218e322da72356e79e5116dff86e3fc255a228.png",
"ratio":1.0
},
"polltype":0,
"pollid":"PollTMM_EXTWS_1500555359472_END",
"pollendtime":"20.07.2017 13:30:59.472 +0000",
"optionlist":[
{
"optionid":0,
"name":"option 1"
},
{
"optionid":1,
"name":"option 2"
},
{
"optionid":2,
"name":"option 3"
}
],
"buttonname":"Cevapla",
"that":"getptmmsingle"
}
}
]
}
}
{
"msgId":"377ee15e-7bae-4f63-85ef-823e813e8006_126 ",
"serviceId":8332,
"content":{
"type":104,
"tmmType":2,
"tmmPollResponse":{
"pollid":"PollTMM_EXTWS_1500555359472_END",
"optionids":[
0
]
}
}
}
{
"msgId":"d15d82a8-0816-44b1-b6a0-dff6299f5906_122 ",
"composition":{
"list":[
{
"type":13,
"tmmType":2,
"tmmPoll":{
"title":"msg title",
"description":"msg desc",
"image":{
"url":"https://timsac.turkcell.com.tr/scontent/p2p/14112016/11/P1e646f5c03a7b4b44f6da1329ac218e322da72356e79e5116dff86e3fc255a228.png",
"ratio":1.0
},
"polltype":1,
"pollid":"PollTMM_EXTWS_1500555466766_END",
"pollendtime":"20.07.2017 13:32:46.766 +0000",
"optionlist":[
{
"optionid":1000,
"name":"option 1"
},
{
"optionid":1001,
"name":"option 2"
},
{
"optionid":1002,
"name":"option 3"
}
],
"buttonname":"Cevapla",
"that":"getptmmmultiple"
}
}
]
}
}
{
"msgId":"74e2923f-e7f0-400b-adf4-49e884e1a5c2_135 ",
"serviceId":8332,
"content":{
"type":104,
"tmmType":2,
"tmmPollResponse":{
"pollid":"PollTMM_EXTWS_1500555684770_END",
"optionids":[
1000,
1002
]
}
}
}
{
"msgId":"9be6b573-d485-445d-beaf-149738a2690e_326 ",
"composition":{
"list":[
{
"type":8,
"richmediatype":4,
"consent":{
"consentid":"ConsentRMM_Simple_EXTWS_1500592906272_END",
"description":"consent simple question?",
"leftbutton":{
"id":402,
"text":"hayır"
},
"rightbutton":{
"id":401,
"text":"evet"
},
"that":"getconsent_simple"
}
}
]
}
}
Onay Sorusu(Consent – Simple) mesajına verilen cevabın Dış sistem ws’ine iletilmesi;
{
"msgId":"71f128aa-1c8a-4f41-a686-2d33f39ec92c_332 ",
"serviceId":8332,
"content":{
"type":101,
"richmediatype":4,
"consentresponse":{
"consentid":"ConsentRMM_Simple_EXTWS_1500592906272_END",
"buttonid":401
}
}
}
Onay Sorusu(Consent – Simple) mesajına verilen cevabın AIML içinde yakalanmak istenmesi;
<aiml version='1.0.1' encoding='UTF-8'>
<category>
<pattern>*</pattern>
<that type='bip_webservice_call'>getconsent_simple</that>
<template>
<star/> seçimi için teşekkürler.
</template>
</category>
</aiml>
{
"msgId":"5bf8dbbd-b1d3-4353-91e7-f5ef982e060b_328 ",
"composition":{
"list":[
{
"type":8,
"richmediatype":5,
"consent":{
"consentid":"ConsentRMM_Input_EXTWS_1500592970810_END",
"description":"consent input question?",
"leftbutton":{
"id":302,
"text":"hayır"
},
"rightbutton":{
"id":301,
"text":"evet"
},
"that":"getconsent_input"
}
}
]
}
}
Input alan Onay Sorusu(Consent – Input) mesajına verilen cevabın Dış sistem ws’ine iletilmesi;
{
"msgId":"a31142f9-e0ca-4445-b325-ef827e61db59_330 ",
"serviceId":8332,
"content":{
"type":101,
"richmediatype":5,
"consentresponse":{
"consentid":"ConsentRMM_Input_EXTWS_1500592970810_END",
"buttonid":302,
"inputtext":""
}
}
}
Input alan Onay Sorusu(Consent – Input) mesajına verilen cevabın AIML içinde yakalanmak istenmesi;
<aiml version='1.0.1' encoding='UTF-8'>
<category>
<pattern>*</pattern>
<that type='bip_webservice_call'>getconsent_input</that>
<template>
<star/> seçimi için teşekkürler.
</template>
</category>
</aiml>
Yapılan isteklerde WS ten REX e dolayısıyla AIML içinde dönüşler için şu an sadece type = 0 ( Metin ) mesajlarin gönderimi desteklenmektedir. AIML içinden DOLAR kurunu sorgulamak amaçlı bir web servis çağrılmak istendiğinde, bip_parameter komutuyla aşağıdakine benzer dinamik parametre tanımları yapılır ve istek JSON içinde transferData alanında gönderilmesi sağlanır. TransferData alanında gönderilen farklı bilgilerle hangi amaçla web servis çağrılmak istendiği ayırt edilmelidir. Bu sayede aynı web servis birden çok amaca hizmet edebilecek şekilde yazılabilinir.
AIML ile dış sistem ws ‘ine dinamik parametre gönderimi;
<bip_webservice_query host="EXTERNAL_WS_URL">
<bip_parameter name='sender'><bip_sender/></bip_parameter>
<bip_parameter name='action'>DOLAR</bip_parameter>
<bip_webservice_query_result var="wscallsucceed" />
<bip_webservice_query_response var="syncresponselist" />
<bip_webservice_query_response_size var="syncresponselistsize" />
</bip_webservice_query>
{
"transferData":{
"sender":"9053XXXXXXXX",
"action":"DOLAR"
},
"msgId":"1",
"serviceId":8309
}
{
"msgId":"1",
"composition":{
"list":[
{
"type":0,
"message":"Değerli müşterimiz, USD = 2,9660\r\nCep Şubesi ile işlemlerinizi dilediğiniz zaman dilediğiniz yerden gerçekleştirmek için tıklayın."
}
]
}
}