We could get fairly close to Craig's idea using a CFD application. You could create a CFD that (1) states the extension's current profile status, then (2) ask the caller to select a new status. For example. "The current presence status for extension 103 is 'Available'. To change your status select one of the following options. For 'Available', press 1, for 'Away' press 2...." Then using the Call Control API you could change the status of the extension that dialed the CFD. The extension of the CFD would be programmed as a BLF on the phone. And for those who are tempted to ask, no, we can't change the color of the BLF to represent the current status... changing the button color is not part of the 3CX API.