How do I force a 603 Decline on an incoming call?

Scenario:
Endpoint A (application) <—SIP Trunk—> Asterisk <—SIP Trunk—> Endpoint B (application)

Endpoint A sends a call to Asterisk over the SIP trunk. The application at Endpoint A requires a 603 Decline be sent to it. The From Header information is stripped and a call is sent to Endpoint B so that our application can process the information in the From header.

How do I get Asterisk to send a 603 decline for every call coming from Endpoint A but still continue the call to Endpoint B?

The closest I’ve gotten is putting a Hangup(21) before the Dial step for Endpoint B. But, that stops the call processing towards Endpoint B and our application does not receive the call.

I tried the Hangup(21) both before and after the dial step, and even tried to run the Hangup(21) in a subroutine tacked on to the dial step.

Thank you for your help!

The closest you can get is to use originate to start a new, asynchronous, call, on the B side.

(Trunks are not something that are defined in the SIP standards, or by Asterisk.)