I think you need to consider a few things.
Why would she want to listen to you blaming her for some bad behaviour. It sounds like a totally reasonablyreasonable response. (Assuming things like yelling back to you isn't something you would actively encourage, and do don't try to do that just to get her to talk). What might work, instead of trying to blame her, is to talk to the room about some consequences. forFor example, say (in a calm voice but loudly enough for her to hear).: "Hey iI see someone spilled their drink. I wonder if someone could help me find a towel to clean it up". That way toyou step away from blaming her and make her part of the solution. The point is not to actually make her do it. The point is to teach her that helping eachothereach other to fix little mistakes is more fun than running away.
Kids can be very dependent on a single parent at that age. My youngest daughter won't talk to me at times. While my older daughter won't talk to her mom. If she has a phase that she won't talk to her grandmother just let her be. If they want to bond with your daughter let them play a game on the floor and see if your daughter wants to join in. Then while playing see if you can get her to talk.
My middle daughter is 6 now and talksspeaks about 20 words a week. That's a huge victory for us (it used to be 5 words a week). In part that is due to her disability but that doesn't seem to be the case since your daughter is talking just fine at other times. One think ithing I learned with my daughter is that communication is about opening and closing communication circles. I say "Hey", you respond with "How are you" and then iI respond with "Fine". A conversation needs be be interesting for all parties involved for this to happen. Being scolded, talked to, or non interesting questions is not something that encourages communication, especially at that age.