{"id":1332,"date":"2008-07-23T09:36:10","date_gmt":"2008-07-23T13:36:10","guid":{"rendered":"http:\/\/blog.voipsupply.com\/?p=1332"},"modified":"2016-07-18T09:30:33","modified_gmt":"2016-07-18T13:30:33","slug":"guest-post-its-so-easy-to-write-apps-for-asterisk","status":"publish","type":"post","link":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/guest-post-its-so-easy-to-write-apps-for-asterisk\/","title":{"rendered":"Guest Post: It\u2019s So Easy To Write Apps for Asterisk"},"content":{"rendered":"<p>One of the most powerful things about Asterisk is the relative ease of developing and integrating new applications.\u00a0\u00a0 Historically, the telephony world has been a &#8220;walled-garden&#8221;, with proprietary technologies, arcane configuration methods, and non-trivial integration hurdles.\u00a0 Asterisk is a pure software application, and an open source one at that.\u00a0 It&#8217;s highly configurable, and through various interfaces (such as <a href=\"http:\/\/www.voip-info.org\/wiki\/view\/Asterisk+AGI\" target=\"_blank\">AGI<\/a> and the <a href=\"http:\/\/www.voip-info.org\/wiki\/view\/Asterisk+manager+API\" target=\"_blank\">manager API<\/a>), it&#8217;s easy to write new applications.\u00a0 And most importantly, Asterisk doesn&#8217;t dictate the implementation language or technology &#8212; you can develop your app in any language you want (e.g. Python, Ruby, Java, C, etc.)<\/p>\n<p>I&#8217;ve built a number of simple applications for our home Asterisk system.\u00a0 For example, we have one that&#8217;s used on school-day mornings.<\/p>\n<p>First, the system rings scheduled wakeup calls in each of the kid&#8217;s bedrooms.\u00a0 Next, as the school bus time approaches, the system announces five minute and two minute warnings on the kitchen phone.\u00a0 It takes advantage of the auto-answer feature on many Ethernet phones (such as the Linksys SPA942 in our kitchen).\u00a0 Pre-recorded announcements (e.g. &#8220;<em>the bus is coming in 5 minutes<\/em>&#8220;) announce automatically out of the phone&#8217;s speakerphone, without anyone having to pick up the phone.<\/p>\n<p>I wrote the entire application in a few hours (most of which was spent learning how to get <a href=\"http:\/\/www.voip-info.org\/wiki\/view\/Asterisk%20auto-dial%20out\" target=\"_blank\">Asterisk to initiate outgoing calls<\/a>).\u00a0 The app is a simple Python script that runs early each morning (using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cron\" target=\"_blank\">cron<\/a>) on the server hosting the Asterisk system.\u00a0 It first checks to see if it&#8217;s a weekday (i.e. school day), and if it is, it queues up the wakeup calls and the two announcement calls.<\/p>\n<p>Future versions will include the holiday calendar to omit the calls and announcements on school holidays, and will automatically check the local news Web site to see if school has been cancelled or delayed.<\/p>\n<p>Try doing that with your Nortel PBX! DISCLOSURE:\u00a0Andy Payne is an investor in Digium.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the most powerful things about Asterisk is the relative ease of developing and integrating new applications.   Historically, the telephony world has been a &#8220;walled-garden&#8221;, with proprietary technologies, arcane configuration methods, and non-trivial integration hurdles.  <\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1075,1218],"tags":[],"class_list":["post-1332","post","type-post","status-publish","format-standard","hentry","category-asterisk","category-open-source-voip"],"_links":{"self":[{"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/posts\/1332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/comments?post=1332"}],"version-history":[{"count":7,"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/posts\/1332\/revisions"}],"predecessor-version":[{"id":202643,"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/posts\/1332\/revisions\/202643"}],"wp:attachment":[{"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/media?parent=1332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/categories?post=1332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.voipsupply.com\/blog\/voip-insider\/wp-json\/wp\/v2\/tags?post=1332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}