mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Merge changes dealing with support for Digium phones.
Presence support has been added. This is accomplished by allowing for presence hints in addition to device state hints. A dialplan function called PRESENCE_STATE has been added to allow for setting and reading presence. Presence can be transmitted to Digium phones using custom XML elements in a PIDF presence document. Voicemail has new APIs that allow for moving, removing, forwarding, and playing messages. Messages have had a new unique message ID added to them so that the APIs will work reliably. The state of a voicemail mailbox can be obtained using an API that allows one to get a snapshot of the mailbox. A voicemail Dialplan App called VoiceMailPlayMsg has been added to be able to play back a specific message. Configuration hooks have been added. Configuration hooks allow for a piece of code to be executed when a specific configuration file is loaded by a specific module. This is useful for modules that are dependent on the configuration of other modules. chan_sip now has a public method that allows for a custom SIP INFO request to be sent mid-dialog. Digium phones use this in order to display progress bars when files are played. Messaging support has been expanded a bit. The main visible difference is the addition of an AMI action MessageSend. Finally, a ParkingLots manager action has been added in order to get a list of parking lots. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368435 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1510,7 +1510,7 @@ static struct ast_channel_tech skinny_tech = {
|
||||
.bridge = ast_rtp_instance_bridge,
|
||||
};
|
||||
|
||||
static int skinny_extensionstate_cb(const char *context, const char *exten, enum ast_extension_states state, void *data);
|
||||
static int skinny_extensionstate_cb(char *context, char *id, struct ast_state_cb_info *info, void *data);
|
||||
static int skinny_transfer(struct skinny_subchannel *sub);
|
||||
|
||||
static struct skinny_line *skinny_line_alloc(void)
|
||||
@@ -3029,11 +3029,17 @@ static void transmit_capabilitiesreq(struct skinny_device *d)
|
||||
transmit_response(d, req);
|
||||
}
|
||||
|
||||
static int skinny_extensionstate_cb(const char *context, const char *exten, enum ast_extension_states state, void *data)
|
||||
static int skinny_extensionstate_cb(char *context, char *exten, struct ast_state_cb_info *info, void *data)
|
||||
{
|
||||
struct skinny_container *container = data;
|
||||
struct skinny_device *d = NULL;
|
||||
char hint[AST_MAX_EXTENSION];
|
||||
int state = info->exten_state;
|
||||
|
||||
/* only interested in device state here */
|
||||
if (info->reason != AST_HINT_UPDATE_DEVICE) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (container->type == SKINNY_SDCONTAINER) {
|
||||
struct skinny_speeddial *sd = container->data;
|
||||
@@ -5060,10 +5066,13 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
|
||||
AST_LIST_TRAVERSE(&tmpline->sublines, tmpsubline, list) {
|
||||
if (!(subline == tmpsubline)) {
|
||||
if (!strcasecmp(subline->lnname, tmpsubline->lnname)) {
|
||||
struct ast_state_cb_info info = {
|
||||
.exten_state = tmpsubline->extenstate,
|
||||
};
|
||||
tmpsubline->callid = callnums++;
|
||||
transmit_callstate(tmpsubline->line->device, tmpsubline->line->instance, tmpsubline->callid, SKINNY_OFFHOOK);
|
||||
push_callinfo(tmpsubline, sub);
|
||||
skinny_extensionstate_cb(NULL, NULL, tmpsubline->extenstate, tmpsubline->container);
|
||||
skinny_extensionstate_cb(NULL, NULL, &info, tmpsubline->container);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user