Asterisk рд╕рдВрд╕реНрдХрд░рдг 12 рдПрдХ REST рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (Asterisk REST рдЗрдВрдЯрд░рдлрд╝реЗрд╕ - ARI) рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ

Asterisk рд╕рдВрд╕реНрдХрд░рдг 12 рдиреЗ REST рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (Asterisk REST рдЗрдВрдЯрд░рдлрд╝реЗрд╕ - ARI) рдкреЗрд╢ рдХрд┐рдпрд╛ред



рд╣рд╛рдВ, рдпрд╣ рдПрдХ рддрд░рд╣ рд╕реЗ RESTful API рд╣реИред



рдЕрдм рддрдХ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрди рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:







рдпрд╛, рдЪреИрдирд▓, рдбрд┐рд╡рд╛рдЗрд╕реЗрд╕, рдмреНрд░рд┐рдЬ, рд░рд┐рдХреЙрд░реНрдбреНрд╕, рд╕рд╛рдЙрдВрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ред рд╕рдВрднрд╡рддрдГ рдХреНрд╖рдорддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА :-)



рдЦреИрд░, рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ WebSocket рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ / ari / рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдФрд░ рдирд┐рд░рдВрддрд░ рдХрдиреЗрдХреНрд╢рди рдореЛрдб рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред

AMI рдХреЗ рд╡рд┐рдкрд░реАрдд, JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╣рд╛рдВ рдЪрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмреЗрд╣рдж рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

ARI рдкрд░ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдкрд┐:



import ari client = ari.connect('http://localhost:8088/', 'hey', 'peekaboo') def on_dtmf(channel, event): """Callback for DTMF events. When DTMF is received, play the digit back to the channel. # hangs up, * plays a special message. :param channel: Channel DTMF was received from. :param event: Event. """ digit = event['digit'] if digit == '#': channel.play(media='sound:goodbye') channel.continueInDialplan() elif digit == '*': channel.play(media='sound:asterisk-friend') else: channel.play(media='sound:digits/%s' % digit) def on_start(channel, event): """Callback for StasisStart events. On new channels, register the on_dtmf callback, answer the channel and play "Hello, world" :param channel: Channel DTMF was received from. :param event: Event. """ channel.on_event('ChannelDtmfReceived', on_dtmf) channel.answer() channel.play(media='sound:hello-world') client.on_channel_event('StasisStart', on_start) # Run the WebSocket client.run(apps="hello")
      
      







рдШрдЯрдирд╛рдПрдБ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдк GET рджреНрд╡рд╛рд░рд╛ рдПрдХ рдИрд╡реЗрдВрдЯ рдЬрдирд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЗрд╕реЗ рдЦреБрдж рдХреЛ WebSocket рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ UserEvent рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рд░рд╛рдВрдХрди рдбреЗрдЯрд╛ рдмрд╕ рдХреА рддрд░рд╣ рд╣реИ: - {P



рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕реНрдЯреИрд╕рд┐рд╕ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдпрд╣ рдбрд╛рдпрд▓рдкреИрди рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:



 exten => 1,1,Wait(1.5) same => n,Stasis(dialer) ; dialer is the name of the application same => n,Wait(2) same => n,Hangup()
      
      







рдЖрдк / рдЪреИрдирд▓ / {ChannelId} / рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ WebSocket рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ WebSocket рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг Asterisk dialplan рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдЧрд╛ред



рдпрд╣ рдПрдХ рдмреЛрддрд▓ рдореЗрдВ рдПрдПрдордЖрдИ рдФрд░ рдПрдЬреАрдЖрдИ рдХреА рддрд░рд╣ рд╣реИред



рд╡реИрд╕реЗ, рдПрдкреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд░реЛрдЯреА рд╣реИред



рдпрд╣рд╛рдБ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИ:



рдЫрд╡рд┐



рдЦреИрд░, рдПрдкреАрдЖрдИ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ UseCases рдХрд╛ рдПрдХ рдкреИрдХреЗрдЯ рд▓реЗрдХрд░ рдЖрдпрд╛:







рдореЙрдирд┐рдЯрд░ ^ рдЬрд╛рд╕реВрд╕ ^ рд░рд┐рдХреЙрд░реНрдб ^ рд╕рдореНрдореЗрд▓рди ^ рдбрд╛рдпрд▓рд░



рдпрд╣ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдкрд░ рдПрдХ рд╕рдВрдХреНрд░рдордг рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред



Asterisk12, рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд▓рд┐рдП рдЯреЗрд▓реАрдлреЛрди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ FreeSWITCH рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред IMHOред XML рд╣реИ, рдпрд╣рд╛рдБ JSON рд╣реИред



рдФрд░ рдЕрдЧрд░ рдЖрдк CURL рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рдРрд╕реЗ рд╣рд╛рдереЛрдВ рдХреЛ рдмрдврд╝рддрд╛ рд╣реИ :-)



 *CLI> core show function CURL -= Info about function 'CURL' =- [Synopsis] Retrieves the contents of a URL [Description] url - URL to retrieve post-data - Optional data to send as a POST (GET is default action) [Syntax] CURL(url[,post-data])
      
      







рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛, рдХреНрдпрд╛ рдХрд╣рдирд╛ рд╣реИ :-)



рдореБрдЦреНрдп рд▓рд┐рдВрдХ:






All Articles