asterisk: An introduction to Asterisk Development

Video in TIB AV-Portal: asterisk: An introduction to Asterisk Development

Formal Metadata

asterisk: An introduction to Asterisk Development
Title of Series
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
A brief introduction to the tools used in Asterisk development, as well as the structure of the program. Information regarding how to submit new features and bug reports will be included as well. Asterisk is an open source telephony platform, commonly used to implement PBX's.
Software developer
Code Multiplication sign Source code File format 1 (number) Client (computing) Software bug Mechanism design Different (Kate Ryan album) Analogy Single-precision floating-point format Core dump Area Source code File format Computer file Electronic mailing list Bit Instance (computer science) Term (mathematics) Latent heat Order (biology) Software testing Quicksort Astrophysics Reading (process) Writing Point (geometry) Dialect Mobile app Functional (mathematics) Link (knot theory) Computer file Codierung <Programmierung> Device driver Branch (computer science) Session Initiation Protocol Latent heat Operator (mathematics) Energy level Software testing Data structure Communications protocol Traffic reporting Form (programming) Module (mathematics) Mobile app Operations research Dialect Internettelefonie Physical law Code Planning Core dump Directory service Device driver Cartesian coordinate system System call Frame problem Inclusion map Function (mathematics) Mixed reality Codec Communications protocol
Point (geometry) Functional (mathematics) Presentation of a group Computer file Code Patch (Unix) Source code Device driver Amsterdam Ordnance Datum Code Software bug 2 (number) Element (mathematics) Revision control Session Initiation Protocol Data model Skeleton (computer programming) Case modding Ontology Core dump Software testing Endliche Modelltheorie Category of being Module (mathematics) Source code Email Scaling (geometry) Software developer Fitness function Electronic mailing list Code Plastikkarte Basis <Mathematik> Directory service Instance (computer science) Line (geometry) Cartesian coordinate system Element (mathematics) Hand fan Category of being Process (computing) Basis <Mathematik> Configuration space Modul <Datentyp> Musical ensemble Quicksort
Web page Slide rule Module (mathematics) Link (knot theory) Software developer Code Feedback Patch (Unix) Multiplication sign Mereology Software bug 2 (number) Mathematics Queue (abstract data type) Traffic reporting Module (mathematics) Focus (optics) Link (knot theory) Software developer Feedback Code System call Coding theory Repository (publishing) Personal digital assistant Blog Quicksort Routing Probability density function
good afternoon I am Mark Michaelson and of course what I want to talk to everybody about is an introduction to asterisk development asterisk by the way is a is a it's an open-source telephony
engine now the thing is I find that whenever I go to open-source conventions and such most people have heard of and possibly also used asterisk but most of them haven't taken the you know the plunge to try to actually start developing it so that's why I'm here today so the very first thing you have to do in order to develop asterisk is you have to get code and I've only provided three links there's a whole bunch more asterisk branches which have specific features in them and such but the biggest thing you'd want to be getting is either the trunk if you were interested in say writing a new feature if you are interested in just seeing what the latest and greatest official releases you would get the one point six point two branch and if you're looking at the one that most people are still using these days because it's the latest long-term release branch you would go with the one point four one so after you've gotten the code I say the best thing to do if you want to start developing asterisk is to actually use it first because it makes a huge difference if you understand the mechanics of it at least at the user level before you start trying to develop and then the next thing you want to do is try to you know reach out to some of the community if you have questions specifically user questions there's the Astra's users mailing list the pound asterisk IRC channel and if you have a bug report that you want to discuss you can go in the Astor's bugs IRC channel as well think about the astros IRC channel for any of you have never been in there before there are some quirky characters in there and while they may seem like total assholes they are you know they mean well so you know give them a shot at least so
alright so you've gotten to the point now where you've used asterisk a little bit and so now you want to start looking at the source now a lot of people when they open up their to asterisk directory they start looking at this source and they go oh forget this there's way too many directories and way too many files I don't know where to even start looking so that's why I'm here and I'm not going to go over every single directory or and asters because that's pointless I'm just gonna go over the main ones that most people would actually want to code in should they actually decide to write asterisks code so the very first - we got include in main these are the only two that I'm going to go over that don't have anything to do with loadable modules the include file really goes without saying it's dot H files that all the files in asterisks include the main directory has ap eyes that are defined by the core things like for instance the asterisk channel structure which is one of the most basic key structures an asterisk has all of its API is defined in the main directory as well as the PBX core as and other api's that are just used all over the source the next directory I want to discuss is the apps directory the apps directory contains dial plan applications from within asterisk so for anyone who's used asterisk before you've probably used things like dial and voicemail and possibly other applications and these are all contained within the apps directory I also put in here in parentheses that this is a great starting point because for most people who use asterisk this is what they see or what they feel like they see when they're using it so this is a good point to look at and see what sort of core API calls are being called there so that you can then possibly dig deeper from that point then there's the folks directory which is dialing functions which calplan functions are similar to dial client applications but they focus more on reading and writing specific values rather than actually executing applications the next two directories can be kind of confusing for some people because they seem sort of similar you have the codecs which are encoder decoder modules for specific audio formats like here in Europe the codec a law is probably the most commonly used for telephony and then of course other you know higher-end codecs like codec g7 22 are also defined here the format's on the other hand have to do with file format operations so if you have for instance a WAV file and you want to be able to read a frame of audio from it this is the form modulus how that's done the next directory is one that a lot of people like to dabble into it's the channels directory and this has the specific channel drivers that asterisk implements asterisk you know the most common one that people hack on there is chann sip because sip is a protocol that has just a myriad of new features that could be added to asterisk and a lot of people want to get their hands dirty and go into their asterisk also has its own specific voice over IP protocol it's called the inter asterisk exchange protocol Chan is the channel driver for that and another voice channel driver that I have here is the chin h.323 driver there are also other channel drivers for non-traditional telephony such as ISDN and analog calls as well and then another directory is the test directory which is it's still kind of in its infancy right now because there just haven't been a whole lot of tests at it but we're focused on adding a lot more and this is actually a great area for people to contribute to if they're looking to do that in asterisk for the first time also in the trunk
version of Astros there's an add ons directory it used to be that Astro Skadden's was a separate repository from asterisk itself because the code that it contained was licensing compatible with asterisks asterisk is dual licensed it's licensed under both GPL and under a commercial license as well and so for pure GPL modules we couldn't just include that with asterisk because it was a it would if we included it with a commercial module then customers would have to always have the source code for those postable and most commercial customers are not fans of that and then the final directory is kind of the wild card directory it's the res directory res is short for resources and res contains files that really just don't fit in any other category so for instance the music on hold API and functionality is in the res directory because it really just doesn't fit anywhere else really so you
have a brief understanding of the directories now within asterisk so how do you start well as I said before in the presentation I think using asterisk is a great way to start start with applications dolphin functions and such that you already understand and try working down from there to the core it's probably it's a slow process but it's best way to do it though and then of course if you decide that you're not gonna actually use asterisk I would say start with an element of telephony that you're familiar with already you know outside of Astra so for instance if one of you out there is a sip guru of some sort and you want to add some sort of sip feature to asterisk that you know it's not there you may just start looking in the SIP channel driver and just add your code directly there without even having used asterisk now the second thing of course is read of the coding guidelines a lot of submissions that we get for new modules and bug fixes and stuff you know they're perfectly fine except they just don't fit the coding guidelines so we tell them to redo their patch and of course you know it would just be time-saving if if people got it right to begin with so read the coding guidelines and if you have any you know questions about how to do things you know you can probably look at some existing code and just model yours after the way it's done feel free of course also to ask development related questions there's an IRC channel pound asterisk dev and an asterisk dev mailing list both of which you know they have there's the audience of those two somewhat overlap but I think the Astor's dev mailing list has a lot more subscribers to it also there's two skeleton modules which are defined in asterisk there's a test scale and a nap scale which they don't actually do anything themselves they're just modeled as a basis for you if you want to write your own asterisk mods module and sort of on the same lines as reading the coding guidelines if you have some function that you want your new code to do for instance asterisk is highly configuration file driven so if you want your new module or whatever to be able to read a configuration file you could try to go and memorize the API but that seems kind of silly when you could just use code that you know already reads a configuration file and use that instead so you get to the point now
where you've actually written some code so the very first thing I would suggest that you do is you upload your patch to issues s org that's our issue tracker where we have both new features and bug reports get posted there and then after you do that you have to be patient because we have a lot of bug reports and unfortunately we don't have unlimited resource to resources to work on those bug reports so we try to get you know some immediate feedback right away just because you know some people people just really don't like having their issue ignored outright so you'll try to get some you know just some immediate high-level feedback from from our lead bug marshal and then after that it's just a matter of until it comes up in our queue as far as you know being high enough priority to get a lot of focus and of course if you get some sort of negative feedback from a bug marshal don't take that as a defeat because most of the time they're not just gonna reject anything outright they're just going to tell you do it a different way and so it's really it's just a matter of just following through whenever you get some sort of negative feedback and
finally I have some very helpful links for any of you who are interested in asterisk first of all if you're not one who's used asterisk before the first link I have here which is a doubt a freely downloadable PDF of a book called asterisk the future of telephony second edition gives a very detailed look at how to install set up and make calls with asterisk as well as pretty much any sort of feature you would want to be able to use as a user my colleague Russell Bryan who's also here with me has a blog post of his it's a three part blog post which explains how to write an asterisk module I have the link to part one here in my slides and you can replace the one with two and three to watch parts two and three and if you do decide to go down the development route I highly suggest that you check out Astros org slash developers because that has instructions ranging from how to merge changes within our SVN repositories as well as documentation for our api's and and other developer related resources that you might need and that's it for my talk I've got about five minutes left so if anyone has any questions now will be a great time I'll put the links page back up just in case people want to copy those down no questions


  118 ms - page object


AV-Portal 3.20.2 (36f6df173ce4850b467c9cb7af359cf1cdaed247)