PRESENCE_STATE()

Since 11.0.0 Functions Found this useful? Upvote it. ×

Get or Set a presence state.

Last reviewed 2026-04-14

PRESENCE_STATE(provider,field[,options])
Description

The PRESENCE_STATE function can be used to retrieve the presence from any presence provider. For example:

NoOp(SIP/mypeer has presence ${PRESENCE_STATE(SIP/mypeer,value)})

NoOp(Conference number 1234 has presence message ${PRESENCE_STATE(MeetMe:1234,message)})

The PRESENCE_STATE function can also be used to set custom presence state from the dialplan. The CustomPresence: prefix must be used. For example:

Set(PRESENCE_STATE(CustomPresence:lamp1)=away,temporary,Out to lunch)

Set(PRESENCE_STATE(CustomPresence:lamp2)=dnd,,Trying to get work done)

Set(PRESENCE_STATE(CustomPresence:lamp3)=xa,T24gdmFjYXRpb24=,,e)

Set(BASE64_LAMP3_PRESENCE=${PRESENCE_STATE(CustomPresence:lamp3,subtype,e)})

You can subscribe to the status of a custom presence state using a hint in the dialplan:

exten => 1234,hint,,CustomPresence:lamp1

The possible values for both uses of this function are:

not_set | unavailable | available | away | xa | chat | dnd

Arguments
  • provider required - The provider of the presence, such as CustomPresence
  • field required - Which field of the presence state information is wanted.
    • value - The current presence, such as away
    • subtype - Further information about the current presence
    • message - A custom message that may indicate further details about the presence
  • options
    • e - On Write - Use this option when the subtype and message provided are Base64 encoded. The values will be stored encoded within Asterisk, but all consumers of the presence state (e.g. the SIP presence event package) will receive decoded values. On Read - Retrieves unencoded message/subtype in Base64 encoded form.

User Notes

No notes yet. Be the first to contribute a tip or example.

Contribute a note

Share a tip, gotcha, or practical example. Keep it under 2000 characters. No questions (use the Asterisk community forums for support). Wrap code in backticks.

Moderated before publishing. Email never shown.
Functions
CDR() ABS() AES_DECRYPT() AES_ENCRYPT() AGC() AGENT() AMI_CLIENT() ARRAY() AST_CONFIG() AST_SORCERY() BASE64_DECODE() BASE64_ENCODE() BASENAME() BLACKLIST() CALENDAR_BUSY() CALENDAR_EVENT() CALENDAR_QUERY() CALENDAR_QUERY_RESULT() CALENDAR_WRITE() CALLCOMPLETION() CALLERID() CALLERPRES() CDR_PROP() CHANNEL() CHANNELS() CHANNEL_EXISTS() CHECKSIPDOMAIN() CONFBRIDGE() CONFBRIDGE_CHANNELS() CONFBRIDGE_INFO() CONNECTEDLINE() CSV_QUOTE() CURL() CURLOPT() CUT() DAHDI_CHANNEL() DB() DB_DELETE() DB_EXISTS() DB_KEYCOUNT() DB_KEYS() DEC() DELETE() DENOISE() DEVICE_STATE() DIALGROUP() DIALPLAN_EXISTS() DIGIT_SUM() DIRNAME() DUNDILOOKUP() DUNDIQUERY() DUNDIRESULT() ENUMLOOKUP() ENUMQUERY() ENUMRESULT() ENV() EVAL() EVAL_EXTEN() EVAL_SUB() EXCEPTION() EXISTS() EXPORT() EXTENSION_STATE() FAXOPT() FEATURE() FEATUREMAP() FIELDNUM() FIELDQTY() FILE() FILE_COUNT_LINE() FILE_FORMAT() FILTER() FRAME_DROP() FRAME_TRACE() GEOLOC_PROFILE() GLOBAL() GLOBAL_DELETE() GLOBAL_EXISTS() GROUP() GROUP_COUNT() GROUP_LIST() GROUP_MATCH_COUNT() HANGUPCAUSE() HANGUPCAUSE_KEYS() HASH() HASHKEYS() HINT() HOLD_INTERCEPT() IAXPEER() IAXVAR() ICONV() IF() IFMODULE() IFTIME() IMPORT() INC() ISNULL() JABBER_RECEIVE() JABBER_STATUS() JITTERBUFFER() JSON_DECODE() KEYPADHASH() LEN() LISTFILTER() LOCAL() LOCAL_PEEK() LOCK() LOG_GROUP() LTRIM() MAILBOX_EXISTS() MASTER_CHANNEL() MATH() MAX() MD5() MEETME_INFO() MESSAGE() MESSAGE_DATA() MIN() MINIVMACCOUNT() MINIVMCOUNTER() MIXMONITOR() MUTEAUDIO() ODBC() ODBC_FETCH() PARK_GET_CHANNEL() PASSTHRU() PERIODIC_HOOK() PITCH_SHIFT() PJSIP_AOR() PJSIP_CONTACT() PJSIP_DIAL_CONTACTS() PJSIP_DTMF_MODE() PJSIP_ENDPOINT() PJSIP_HEADER() PJSIP_HEADERS() PJSIP_HEADER_PARAM() PJSIP_INHERITABLE_HEADER() PJSIP_MEDIA_OFFER() PJSIP_MOH_PASSTHROUGH() PJSIP_PARSE_URI() PJSIP_PARSE_URI_FROM() PJSIP_RESPONSE_HEADER() PJSIP_RESPONSE_HEADERS() PJSIP_SEND_SESSION_REFRESH() PJSIP_TRANSFER_HANDLING() POLARITY() POP() PP_EACH_EXTENSION() PP_EACH_USER() PRESENCE_STATE() PUSH() QUEUE_EXISTS() QUEUE_GET_CHANNEL() QUEUE_MEMBER() QUEUE_MEMBER_COUNT() QUEUE_MEMBER_LIST() QUEUE_MEMBER_PENALTY() QUEUE_VARIABLES() QUEUE_WAITING_COUNT() QUOTE() RAND() REALTIME() REALTIME_DESTROY() REALTIME_FIELD() REALTIME_HASH() REALTIME_STORE() RECORDING_INFO() REDIRECTING() REGEX() REPLACE() RTRIM() SAYFILES() SCRAMBLE() SET() SHA1() SHARED() SHELL() SHIFT() SIPPEER() SIP_HEADER() SIP_HEADERS() SMDI_MSG() SMDI_MSG_RETRIEVE() SORT() SPEECH() SPEECH_ENGINE() SPEECH_GRAMMAR() SPEECH_RESULTS_TYPE() SPEECH_SCORE() SPEECH_TEXT() SPRINTF() SQL_ESC() SQL_ESC_BACKSLASHES() SRVQUERY() SRVRESULT() STACK_PEEK() STAT() STIR_SHAKEN() STIR_SHAKEN_ATTESTATION() STRBETWEEN() STRFTIME() STRPTIME() STRREPLACE() SYSINFO() TALK_DETECT() TESTTIME() TIMEOUT() TOLOWER() TONE_DETECT() TOUPPER() TRIM() TRYLOCK() TXTCIDNAME() UNLOCK() UNSHIFT() URIDECODE() URIENCODE() UUID() VALID_EXTEN() VARIABLE_EXISTS() VERSION() VMCOUNT() VM_INFO() VOLUME()
Functions
CDR() ABS() AES_DECRYPT() AES_ENCRYPT() AGC() AGENT() AMI_CLIENT() ARRAY() AST_CONFIG() AST_SORCERY() BASE64_DECODE() BASE64_ENCODE() BASENAME() BLACKLIST() CALENDAR_BUSY() CALENDAR_EVENT() CALENDAR_QUERY() CALENDAR_QUERY_RESULT() CALENDAR_WRITE() CALLCOMPLETION() CALLERID() CALLERPRES() CDR_PROP() CHANNEL() CHANNELS() CHANNEL_EXISTS() CHECKSIPDOMAIN() CONFBRIDGE() CONFBRIDGE_CHANNELS() CONFBRIDGE_INFO() CONNECTEDLINE() CSV_QUOTE() CURL() CURLOPT() CUT() DAHDI_CHANNEL() DB() DB_DELETE() DB_EXISTS() DB_KEYCOUNT() DB_KEYS() DEC() DELETE() DENOISE() DEVICE_STATE() DIALGROUP() DIALPLAN_EXISTS() DIGIT_SUM() DIRNAME() DUNDILOOKUP() DUNDIQUERY() DUNDIRESULT() ENUMLOOKUP() ENUMQUERY() ENUMRESULT() ENV() EVAL() EVAL_EXTEN() EVAL_SUB() EXCEPTION() EXISTS() EXPORT() EXTENSION_STATE() FAXOPT() FEATURE() FEATUREMAP() FIELDNUM() FIELDQTY() FILE() FILE_COUNT_LINE() FILE_FORMAT() FILTER() FRAME_DROP() FRAME_TRACE() GEOLOC_PROFILE() GLOBAL() GLOBAL_DELETE() GLOBAL_EXISTS() GROUP() GROUP_COUNT() GROUP_LIST() GROUP_MATCH_COUNT() HANGUPCAUSE() HANGUPCAUSE_KEYS() HASH() HASHKEYS() HINT() HOLD_INTERCEPT() IAXPEER() IAXVAR() ICONV() IF() IFMODULE() IFTIME() IMPORT() INC() ISNULL() JABBER_RECEIVE() JABBER_STATUS() JITTERBUFFER() JSON_DECODE() KEYPADHASH() LEN() LISTFILTER() LOCAL() LOCAL_PEEK() LOCK() LOG_GROUP() LTRIM() MAILBOX_EXISTS() MASTER_CHANNEL() MATH() MAX() MD5() MEETME_INFO() MESSAGE() MESSAGE_DATA() MIN() MINIVMACCOUNT() MINIVMCOUNTER() MIXMONITOR() MUTEAUDIO() ODBC() ODBC_FETCH() PARK_GET_CHANNEL() PASSTHRU() PERIODIC_HOOK() PITCH_SHIFT() PJSIP_AOR() PJSIP_CONTACT() PJSIP_DIAL_CONTACTS() PJSIP_DTMF_MODE() PJSIP_ENDPOINT() PJSIP_HEADER() PJSIP_HEADERS() PJSIP_HEADER_PARAM() PJSIP_INHERITABLE_HEADER() PJSIP_MEDIA_OFFER() PJSIP_MOH_PASSTHROUGH() PJSIP_PARSE_URI() PJSIP_PARSE_URI_FROM() PJSIP_RESPONSE_HEADER() PJSIP_RESPONSE_HEADERS() PJSIP_SEND_SESSION_REFRESH() PJSIP_TRANSFER_HANDLING() POLARITY() POP() PP_EACH_EXTENSION() PP_EACH_USER() PRESENCE_STATE() PUSH() QUEUE_EXISTS() QUEUE_GET_CHANNEL() QUEUE_MEMBER() QUEUE_MEMBER_COUNT() QUEUE_MEMBER_LIST() QUEUE_MEMBER_PENALTY() QUEUE_VARIABLES() QUEUE_WAITING_COUNT() QUOTE() RAND() REALTIME() REALTIME_DESTROY() REALTIME_FIELD() REALTIME_HASH() REALTIME_STORE() RECORDING_INFO() REDIRECTING() REGEX() REPLACE() RTRIM() SAYFILES() SCRAMBLE() SET() SHA1() SHARED() SHELL() SHIFT() SIPPEER() SIP_HEADER() SIP_HEADERS() SMDI_MSG() SMDI_MSG_RETRIEVE() SORT() SPEECH() SPEECH_ENGINE() SPEECH_GRAMMAR() SPEECH_RESULTS_TYPE() SPEECH_SCORE() SPEECH_TEXT() SPRINTF() SQL_ESC() SQL_ESC_BACKSLASHES() SRVQUERY() SRVRESULT() STACK_PEEK() STAT() STIR_SHAKEN() STIR_SHAKEN_ATTESTATION() STRBETWEEN() STRFTIME() STRPTIME() STRREPLACE() SYSINFO() TALK_DETECT() TESTTIME() TIMEOUT() TOLOWER() TONE_DETECT() TOUPPER() TRIM() TRYLOCK() TXTCIDNAME() UNLOCK() UNSHIFT() URIDECODE() URIENCODE() UUID() VALID_EXTEN() VARIABLE_EXISTS() VERSION() VMCOUNT() VM_INFO() VOLUME()