]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_voicemail: Add AMI event for mailbox PIN changes.
authorNaveen Albert <asterisk@phreaknet.org>
Mon, 30 Oct 2023 13:27:20 +0000 (09:27 -0400)
committerNaveen Albert <asterisk@phreaknet.org>
Wed, 1 Nov 2023 12:46:30 +0000 (12:46 +0000)
This adds an AMI event that is emitted whenever a
mailbox password is successfully changed, allowing
AMI consumers to process these.

UserNote: The VoicemailPasswordChange event is
now emitted whenever a mailbox password is updated,
containing the mailbox information and the new
password.

Resolves: #398

apps/app_voicemail.c

index 513ba9d855c8c81aa8a50c80e15fcaa7e685bf57..f37b73e17900e1a2ce49ef637a1d99b6a3908f45 100644 (file)
                        as the same as the from.</para>
                </description>
        </manager>
+       <managerEvent language="en_US" name="VoicemailPasswordChange">
+               <managerEventInstance class="EVENT_FLAG_USER">
+                       <synopsis>Raised in response to a mailbox password change.</synopsis>
+                       <syntax>
+                               <parameter name="Context">
+                                       <para>Mailbox context.</para>
+                               </parameter>
+                               <parameter name="Mailbox">
+                                       <para>Mailbox name.</para>
+                               </parameter>
+                               <parameter name="NewPassword">
+                                       <para>New password for mailbox.</para>
+                               </parameter>
+                       </syntax>
+               </managerEventInstance>
+       </managerEvent>
  ***/
 
 #ifdef IMAP_STORAGE
@@ -1849,6 +1865,16 @@ static int reset_user_pw(const char *context, const char *mailbox, const char *n
                res = 0;
        }
        AST_LIST_UNLOCK(&users);
+       if (!res) {
+               struct ast_json *json_object;
+
+               json_object = ast_json_pack("{s: s, s: s, s: s}",
+                       "Context", S_OR(context, "default"),
+                       "Mailbox", mailbox,
+                       "NewPassword", newpass);
+               ast_manager_publish_event("VoicemailPasswordChange", EVENT_FLAG_SYSTEM | EVENT_FLAG_USER, json_object);
+               ast_json_unref(json_object);
+       }
        return res;
 }
 
@@ -1892,7 +1918,7 @@ static void vm_change_password(struct ast_vm_user *vmu, const char *newpassword)
                        ast_copy_string(vmu->password, newpassword, sizeof(vmu->password));
                        break;
                } else {
-                       ast_verb(4, "Writing voicemail password to file %s failed, falling back to config file\n", secretfn);
+                       ast_log(LOG_WARNING, "Writing voicemail password to file %s failed, falling back to config file\n", secretfn);
                }
                /* Fall-through */
        case OPT_PWLOC_VOICEMAILCONF: