[asterisk-users] DB_DELETE Function in 1.4

Alvin Austin aan at crlogic.com
Tue Jan 23 18:33:29 MST 2007


Jeremiah Millay wrote:
> Does anyone know what application I should place this function in? For 
> example with the DB function I currently do something like this to add 
> an entry to the asterisk database:
> 
> exten => s,n,Set(DB(AGENT/${MACRO_EXTEN:1})=${CALLERID(num)})
> 
> To delete the entries I do something like this:
> 
> exten => s,n,DBDel(AGENT/${MACRO_EXTEN:1})
> 
> DBDel is marked as deprecated in favor of the DB_DELETE function but it 
> returns a warning when using it with a dialplan application like Set:
> 
> exten => s,n,Set(DB_DELETE(AGENT/${MACRO_EXTEN:1}))
> 
> Will return:
>    -- Executing [s at macro-queue-addremove:202] Set("SIP/2146-b6f09f30", 
> "DB_DELETE(AGENT/2109)") in new stack
> [Jan 23 16:51:24] WARNING[4010]: pbx.c:5827 pbx_builtin_setvar: Ignoring 
> entry 'DB_DELETE(AGENT/2109)' with no = (and not last 'options' entry)
> 
> and it doesn't delete the database entry.
> 
> Would DB_DELETE work in an application like NoOp? Just wondering if 
> anyone has any experience using this new function in 1.4.0.
> Thanks,
> Jeremiah

Online (CLI) reference:
*CLI> core show function DB_DELETE

   -= Info about function 'DB_DELETE' =-

[Syntax]
DB_DELETE(<family>/<key>)

[Synopsis]
Return a value from the database and delete it

[Description]
This function will retrieve a value from the Asterisk database
  and then remove that key from the database.  DB_RESULT
will be set to the key's value if it exists.


So here's what you do to delete a database entry in 1.4.0:
exten => s,n,Set(oldval=${DB_DELETE(AGENT/${MACRO_EXTEN:1})})

; saves the old value of that key (in your case the callerid)
; into ${oldval} and deletes it from the DB.  You can look at
; the value for the key you just deleted.
exten => s,n,NoOp(oldval : ${oldval})

Have fun!
Alvin


More information about the asterisk-users mailing list