Hey Scotty I have a 2003 Chevy Silverado1500 with around 113,000 mi and I went to my local harbor freight and bought an air horn I went to my local mechanic and had him install it because wanted him to piggy back it off the factory horn which he did but now the horn doesn’t work when I push it but it works when I lock the car and it works some times but then goes out again do you know what could be wrong with my truck thank you Scotty and stay safe
We just did a post on GM pickup truck horns and everything in my reply in that thread is applicable to yours except in your case you know that the relay wiring is all good and the wiring to the horns is good. (Your BCM can provide a Ground to relay socket 86 and the horns work)
Your fuse box is laid out differently from that post about the 2002 Sierra 2500.
Here's how yours is laid out:

The wiring diagram is the same but in your case I'll also highlight in Green the Ground from the BCM to relay socket 86 because like you say, in your case the BCM can sound the horn but your horn switch can't.

In your case you just want to confirm that Horn relay socket 86 isn't getting a Ground when you press the Horn pad so grab a test light, attach the alligator clip to the battery Positive post, pull out the horn relay and probe relay socket 86 as somebody presses the horn pad. If the light doesn't light, that confirms it isn't getting a Ground from the horn switch.
Then you'll have to remove the airbag to access the horn switch. (It's easy, watch some youtubes taking note to disconnect the battery and waiting a while before you mess with the airbag).
The switch itself usually doesn't fail. What happens is the contact that goes to the turn signal cancelling cam (with the horn contact ring on the backside) gets worn down or crudded up.
This contact:

Like I said there's plenty of youtubes on replacing these and some guys try to clean that contact or even try to build it up with solder to fix it but it's a $20 part. Just replace it