Differences of OnCollisionEnter, OnTriggerEnter vs OnControllerColliderHit?

I am trying to write a box object that when the player dash into it it will break.

OnTriggerEnter/Stay - don't server the purpose, the box need to be non trigger;

OnCollisionEnter/Stay - doesn't work, and I don't understand why...Is it because CharacterController does not count as a collider so it won't work?

OnCharacterControllerHit - doesn't work either! ... I am coding on the box not on the player that has the charactercontroller. I guess that's why??(havn't try it yet)

Then here's my question : how can I script on the box side, but get the collision detection? ( i do'nt want to attach additional colliders @_@!)

Thanks!!!!

============================================================================== have a performance question, reference says "The Collision class contains information about contact points, impact velocity etc. If you don't use collisionInfo in the function, leave out the collisionInfo parameter as this avoids unneccessary calculations"

what collision info does it refer to? the Collision.contacts? does it simply mean if I don't access that parameter, the calculation will be saved? Makes me really curious. Thanks guys!! : )

The easiest way is to send a collision message to a GameObject upon OnCharacterControllerHit using SendMessage (although with a little bit of imagination there are more efficient ways).