Different music on hold for different callerID

Is it possible to set a MOH according to specific callerID number?
for example,
if the callerID number is: 8222222 a MOH 123.mp3 will be played
if the callerID number is: 8333333 a MOH 456.mp3 will be played
if the CallerID number is not in the list, the caller will hear a normal ringing tone.

This seems too obvious - make a separate inbound route for each CID, and set the desired MOH on the Inbound Route page.

I will try to be more specific.
Guy “A” is calling me from his Cellphone to my DID.
this Guy’s Cellphone number is: 8222222
I want Guy “A” to hear 123.mp3 as Music on hold while my phone is ringing.
8222222 is dialing to my single DID, my phone is ringing and Guy “A” will hear 123.mp3.

Now, Guy “B” is calling me from his Telephone to my DID.
Guy’s “B” Telephone number is: 8333333
I want Guy “B” to hear 456.mp3 as Music on hold while my phone is ringing.
8333333 is dialing to my single DID, my phone is ringing and Guy “B” will hear 456.mp3.

See this is example of what I mean, I just don’t know how to implement it inside freepbx and dialparties.agi.

exten => 2223,1,Answer()
exten => 2223,n,NoOp(${CALLERID(num)} “is calling”)
exten => 2223,n,GotoIf($[${CALLERID(num)} = 201]?yehuda:default)
exten => 2223,n(yehuda),Dial(SIP/202,60,m(yehuda))
exten => 2223,n(default),Dial(SIP/202,60)
exten => 2223,n,hangup()

A special audio track being played while ringing an extension is not music on hold.

But it’s still possible and wiseoldowl gave you a big part of the answer. The other part is to configure a follow-me and change Music on hold from ring to your choice of hold music.